Where can I find the most modern tutorial that teaches tkinter
together with ttk
?
Tkinter
seems the only way to go in Python 3 (don't suggest Python 2), and ttk
gave me hope for good-looking GUI.
Tkinter widgets are used to add Buttons, Labels, Text, ScrollBar, etc., however, tkinter. ttk supports a variety of widgets as compared to tkinter widgets. Tkinter. ttk doesn't support Place, Pack() and Grid(), thus it is recommended to use tkinter widget with ttk.
To invoke a function or a method of a class automatically when the button is clicked, you assign its command option to the function or method. This is called the command binding in Tkinter. To create a button, you use the ttk.Button constructor as follows: button = ttk.Button(container, **option)
Tkinter is a Python package which comes with many functions and methods that can be used to create an application. In order to create a tkinter application, we generally create an instance of tkinter frame, i.e., Tk(). It helps to display the root window and manages all the other components of the tkinter application.
I have found the TkDocs tutorial to be very useful. It describes building Tk
interfaces using Python and Tkinter
and ttk
and makes notes about differences between Python 2 and 3. It also has examples in Perl, Ruby and Tcl, since the goal is to teach Tk itself, not the bindings for a particular language.
I haven't gone through the whole thing from start to finish, rather have only used a number of topics as examples for things I was stuck on, but it is very instructional and comfortably written. Today reading the intro and first few sections makes me think I will start working through the rest of it.
Finally, it's current and the site has a very nice look. He also has a bunch of other pages which are worth checking out (Widgets, Resources, Blog). This guy's doing a lot to not only teach Tk, but also to improve people's understanding that it's not the ugly beast that it once was.
I recommend the NMT Tkinter 8.5 reference.
The module names used in some examples are those used in Python 2.7.
Here's a reference for the name changes in Python 3: link
One of the conveniences of ttk is that you can choose a preexistingtheme,
which is a full set of Styles applied to the ttk widgets.
Here's an example I wrote (for Python 3) that allows you to select any available theme from a Combobox:
import random import tkinter from tkinter import ttk from tkinter import messagebox class App(object): def __init__(self): self.root = tkinter.Tk() self.style = ttk.Style() available_themes = self.style.theme_names() random_theme = random.choice(available_themes) self.style.theme_use(random_theme) self.root.title(random_theme) frm = ttk.Frame(self.root) frm.pack(expand=True, fill='both') # create a Combobox with themes to choose from self.combo = ttk.Combobox(frm, values=available_themes) self.combo.pack(padx=32, pady=8) # make the Enter key change the style self.combo.bind('<Return>', self.change_style) # make a Button to change the style button = ttk.Button(frm, text='OK') button['command'] = self.change_style button.pack(pady=8) def change_style(self, event=None): """set the Style to the content of the Combobox""" content = self.combo.get() try: self.style.theme_use(content) except tkinter.TclError as err: messagebox.showerror('Error', err) else: self.root.title(content) app = App() app.root.mainloop()
Side note: I've noticed that there is a 'vista' theme available when using Python 3.3 (but not 2.7).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With