import tkinter as tk import ttkbootstrap as ttk from random import choice from ttkbootstrap import utility utility.enable_high_dpi_awareness() DARK = 'superhero' LIGHT = 'flatly' def create_frame_test(bootstyle, style): frame = ttk.Frame(padding=10) # title title = ttk.Label(frame, text='Frame', anchor=tk.CENTER) title.pack(padx=5, pady=2, fill=tk.BOTH) ttk.Separator(frame).pack(padx=5, pady=5, fill=tk.X) # default frm = ttk.Frame(frame, style=bootstyle, width=150, height=100) frm.pack(padx=5, pady=5) frm.pack_propagate(0) ttk.Label(frm, text='default').pack(fill=tk.BOTH) # color for color in style.theme.colors: frm = ttk.Frame(frame, bootstyle=color, width=150, height=100) frm.pack(padx=5, pady=5) frm.pack_propagate(0) ttk.Label(master=frm, text=color, bootstyle=(color, 'inverse')).pack(fill=tk.BOTH)
def __init__( self, title="ttkbootstrap", themename="litera", iconphoto='', size=None, position=None, minsize=None, maxsize=None, resizable=None, hdpi=True, scaling=None, transient=None, overrideredirect=False, alpha=1.0, ): """ Parameters: title (str): The title that appears on the application titlebar. themename (str): The name of the ttkbootstrap theme to apply to the application. iconphoto (str): A path to the image used for the titlebar icon. Internally this is passed to the `Tk.iconphoto` method and the image will be the default icon for all windows. A ttkbootstrap image is used by default. To disable this default behavior, set the value to `None` and use the `Tk.iconphoto` or `Tk.iconbitmap` methods directly. size (Tuple[int, int]): The width and height of the application window. Internally, this argument is passed to the `Window.geometry` method. position (Tuple[int, int]): The horizontal and vertical position of the window on the screen relative to the top-left coordinate. Internally this is passed to the `Window.geometry` method. minsize (Tuple[int, int]): Specifies the minimum permissible dimensions for the window. Internally, this argument is passed to the `Window.minsize` method. maxsize (Tuple[int, int]): Specifies the maximum permissible dimensions for the window. Internally, this argument is passed to the `Window.maxsize` method. resizable (Tuple[bool, bool]): Specifies whether the user may interactively resize the toplevel window. Must pass in two arguments that specify this flag for _horizontal_ and _vertical_ dimensions. This can be adjusted after the window is created by using the `Window.resizable` method. hdpi (bool): Enable high-dpi support for Windows OS. This option is enabled by default. scaling (float): Sets the current scaling factor used by Tk to convert between physical units (for example, points, inches, or millimeters) and pixels. The number argument is a floating point number that specifies the number of pixels per point on window's display. transient (Union[Tk, Widget]): Instructs the window manager that this widget is transient with regard to the widget master. Internally this is passed to the `Window.transient` method. overrideredirect (bool): Instructs the window manager to ignore this widget if True. Internally, this argument is passed to the `Window.overrideredirect(1)` method. alpha (float): On Windows, specifies the alpha transparency level of the toplevel. Where not supported, alpha remains at 1.0. Internally, this is processed as `Toplevel.attributes('-alpha', alpha)`. """ if hdpi: utility.enable_high_dpi_awareness() super().__init__() self.winsys = self.tk.call('tk', 'windowingsystem') if scaling is not None: utility.enable_high_dpi_awareness(self, scaling) if iconphoto is not None: if iconphoto == '': # the default ttkbootstrap icon self._icon = tkinter.PhotoImage(master=self, data=Icon.icon) self.iconphoto(True, self._icon) else: try: # the user provided an image path self._icon = tkinter.PhotoImage(file=iconphoto, master=self) self.iconphoto(True, self._icon) except tkinter.TclError: # The fallback icon if the user icon fails. print('iconphoto path is bad; using default image.') self._icon = tkinter.PhotoImage(data=Icon.icon, master=self) self.iconphoto(True, self._icon) self.title(title) if size is not None: width, height = size self.geometry(f"{width}x{height}") if position is not None: xpos, ypos = position self.geometry(f"+{xpos}+{ypos}") if minsize is not None: width, height = minsize self.minsize(width, height) if maxsize is not None: width, height = maxsize self.maxsize(width, height) if resizable is not None: width, height = resizable self.resizable(width, height) if transient is not None: self.transient(transient) if overrideredirect: self.overrideredirect(1) if alpha is not None: if self.winsys == 'x11': self.wait_visibility(self) self.attributes("-alpha", alpha) apply_class_bindings(self) apply_all_bindings(self) self._style = Style(themename)