Documentation
- Tk Commands
- TkDocs Home
- Tkinter 8.5 reference: a GUI for Python
- Welcome to this Tk tutorial! — Tk tutorial 2020 documentation Tkinter Hello, World! many examples/snippets
Default Widgets
Canvas
no border
highlightthickness=0, relief='ridge', bd=0
Image
foo = PhotoImage # foo may clear by garbage collection, can assign to class to prevent
button.image = foo
Quick references
Widgets useful methods
The following are some of the most useful methods:
- winfo_class: a class identifying the type of widget, e.g. TButton for a themed button
- winfo_children: a list of widgets that are the direct children of a widget in the hierarchy
- winfo_parent: parent of the widget in the hierarchy
- winfo_toplevel: the toplevel window containing this widget
- winfo_width, winfo_height: current width and height of the widget; not accurate until appears onscreen
- winfo_reqwidth, winfo_reqheight: the width and height the widget requests of the geometry manager (more on this shortly)
- winfo_x, winfo_y: the position of the top-left corner of the widget relative to its parent
- winfo_rootx, winfo_rooty: the position of the top-left corner of the widget relative to the entire screen the position of the top-left corner of the widget relative to its parent
- winfo_rootx, winfo_rooty: the position of the top-left corner of the widget relative to the entire screen
- winfo_vieweable: whether the widget is displayed or hidden (all its ancestors in the hierarchy must be viewable for it to be viewable)
screen size
screen_width = win.winfo_screenwidth()
screen_height = win.winfo_screenheight()
#Print the screen size
print("Screen width:", screen_width)
print("Screen height:", screen_height)
def print_hierarchy(w, depth=0):
print(' '*depth + w.winfo_class() + ' w=' + str(w.winfo_width()) + ' h=' + str(w.winfo_height()) + ' x=' + str(w.winfo_x()) + ' y=' + str(w.winfo_y()))
for i in w.winfo_children():
print_hierarchy(i, depth+1)
print_hierarchy(root)
Grid management
grid_forget & grid_remove
grid_slaves()
w.grid_remove()
destroy()
grid_forget
w.grid()
# destroy
for widget in frame.winfo_children():
widget.destroy()
life circle ?
update(), update_idletastks()
python - What's the difference between "update" and "update_idletasks"? - Stack Overflow
The important thing to remember is that update blocks until all events are processed. In effect, that means you have a mainloop nested inside a mainloop. It's never a good idea to have an infinite loop inside an infinite loop.
Event
Modifiers
Control
Mod1, M1, Command
Alt
Mod2, M2, Option
Shift
Mod3, M3
Lock
Mod4, M4
Extended
Mod5, M5
Button1, B1
Meta, M
Button2, B2
Double
Button3, B3
Triple
Button4, B4
Quadruple
Button5, B5
Event types
Activate
Destroy
Map
ButtonPress, Button
Enter
MapRequest
ButtonRelease
Expose
Motion
Circulate
FocusIn
MouseWheel
CirculateRequest
FocusOut
Property
Colormap
Gravity
Reparent
Configure
KeyPress, Key
ResizeRequest
ConfigureRequest
KeyRelease
Unmap
Create
Leave
Visibility
Deactivate
Some Examples
label.bind('<Button-1>', left_mouse_down)
label.bind('<ButtonRelease-1>', left_mouse_up)
label.bind('<Button-3>', right_mouse_down)
label.bind('<ButtonRelease-3>', right_mouse_up)
label.bind('<B1-Motion>', moving_mouse)
label.bind('<Enter>', moving_into)
label.bind('<Leave>', moving_out)
label.bind('<FocusIn>', focus)
label.bind('<FocusOut>', unfocus)
<Double-Button-1>
<MouseWheel>
<Button-4>
<Button-5>
<Control-Button-1>
<space> # lower case
frame.bind('<Control-Shift-S>', key)
bind & bind_all
bind_all: a certain event calls a handler no matter what widget has the focus or is under the mouse
event_generate cannot send args (data)
Generate Event Passing Data : Tkinter
Styles
via: 5.6. Relief styles
# Create style Object
style = Style()
style.configure('TButton', font =
('calibri', 20, 'bold'),
borderwidth = '4')
# Changes will be reflected
# by the movement of mouse.
style.map('TButton', foreground = [('active', '! disabled', 'green')],
background = [('active', 'black')])
Packages/Widgets
Widgets
- Welcome to ttkwidgets’s documentation! — ttkwidgets 0.12.0 documentation
- Combobox Autocomplete « Python recipes « ActiveState Code -tkinter-ttk-Treeview-Simple-Demo/ComplexTreeview.py at master · r2123b/tkinter-ttk-Treeview-Simple-Demo
Video Player
- huskeee/tkvideo: Python module for playing videos (without sound) inside tkinter Label widget using Pillow and imageio 用了 imageio/imageio: Python library for reading and writing image data
- PaulleDemon/tkVideoPlayer: Video player for tkinter. 用 av (ffmpeg4) build 不成功
Table/Excel/DataGrid
- ragardner/tksheet: Python 3.6+ tkinter table widget for displaying tabular data
- dmnfarrell/tkintertable: A pure Python library for adding tables to a Tkinter application
- nbro/tktable: Wrapper library for Python of the homonymous Tk library.
- jazzband/prettytable: Display tabular data in a visually appealing ASCII table format
Style/Theme
- COLORS – wikiPython
- List of ttk Themes
- PaulleDemon/tkStyleSheet: stylesheet for Tkinter How to make Tkinter look modern? - How to use themes in Tkinter : Python
Books
- Modern Tkinter for Busy Python Developers: Quickly learn to create great looking user interfaces for Windows, Mac and Linux using Python's standard GUI toolkit 3, Roseman, Mark, eBook - Amazon.com
- Python GUI Programming with Tkinter [Book]
Top comments (0)