Voici une manière classique de classer Tkinter, un outil d'interface graphique Python.
Ceci est un article d'introduction sur la création d'une visionneuse d'images à l'aide de ce modèle. (Une addition) Créer une visionneuse d'images avec Tkinter
import tkinter as tk
from tkinter import ttk
class Application(tk.Frame):
    def __init__(self,master):
        super().__init__(master)
        self.pack()
        self.master.geometry("300x300")
        self.master.title("Tkinter with Class Template")
        self.create_widgets()
    def create_widgets(self):
        pass
    def callBack(self):
        pass
def main():
    root = tk.Tk()
    app = Application(master=root)#Inherit
    app.mainloop()
if __name__ == "__main__":
    main()

Créez une interface graphique qui effectue les opérations suivantes lorsque vous appuyez sur le bouton.
import tkinter as tk
from tkinter import ttk
#Generate root instance
root = tk.Tk()
root.geometry("300x300")
root.title("Tkinter without Class")
#Define Button Click Event Function
def say_Hello():
    print("Hello World") # on python console
    label_hello.configure(text="I Have benn Clicked!")
    print(name.get())
    label_name.configure(text = name.get())
#Define Button Widget
button_hello = ttk.Button(master=root)
button_hello.configure(text="Hello World")
button_hello.configure(command = say_Hello)
button_hello.pack()
#Define Label Widget
label_hello = ttk.Label(master=root)
label_hello.configure(text = 'A Label')
label_hello.pack()
#Define Enntry Widget
name= tk.StringVar()
entry_name = ttk.Entry(master=root)
entry_name.configure(textvariable = name)
entry_name.pack()
#Define Label Widget2
label_name = ttk.Label(master=root)
label_name.configure(text = 'Please input something in Entry')
label_name.pack()
# Start GUI
root.mainloop()
Ici, nous allons changer le code de programmation procédurale du chapitre précédent en un modèle de classification. Faites attention à vous-même.
import tkinter as tk
from tkinter import ttk
class Application(tk.Frame):
    def __init__(self,master):
        super().__init__(master)
        self.pack()
        self.master.geometry("300x300")
        self.master.title("Tkinter with Class")
        self.create_widgets()
    # Create Widgets function
    def create_widgets(self):
        #Button
        self.button_hello = ttk.Button(self)
        self.button_hello.configure(text="Hello World")
        self.button_hello.configure(command = self.say_Hello) #do not forget to add self!
        self.button_hello.pack()
        #Label
        self.label_hello = ttk.Label(self)
        self.label_hello.configure(text='A Label')
        self.label_hello.pack()
        #Entry
        self.name = tk.StringVar()
        self.entry_name = ttk.Entry(self)
        self.entry_name.configure(textvariable = self.name)
        self.entry_name.pack()
        #Label2
        self.label_name=ttk.Label(self)
        self.label_name.configure(text = 'Please input something in Entry')
        self.label_name.pack()
    # Event Callback Function
    def say_Hello(self):
        print("Hello, World")  # on python console
        self.label_hello.configure(text="I Have benn Clicked!")
        print(self.name.get())
        self.label_name.configure(text=self.name.get())
def main():
    root = tk.Tk()
    app = Application(master=root)#Hériter de l'héritage de classe!
    app.mainloop()
if __name__ == "__main__":
    main()

J'ai trouvé que l'utilisation de classes rendait le code Python plus structuré et plus facile à lire. Avec cela, nous continuerons à nous développer. J'avais l'impression de pouvoir enfin voir le monde de Python.
Recommended Posts