Python Tkinter
Python ponúka viacero možností vývoja GUI (Graphical User Interface). Zo všetkých metód GUI je tkinter najčastejšie používanou metódou. Je to štandardné rozhranie Pythonu k súprave nástrojov GUI Tk dodávané s Pythonom. Python Tkinter je najrýchlejší a najjednoduchší spôsob vytvárania GUI aplikácií. Vytvorenie GUI pomocou Tkinter je jednoduchá úloha.
Obsah
Ak chcete vytvoriť aplikáciu Tkinter Python, postupujte podľa týchto základných krokov:
- Importujte modul tkinter : Toto sa vykonáva rovnako ako import akéhokoľvek iného modulu Python . Všimnite si, že v Pythone 2.x má modul názov „Tkinter“, zatiaľ čo v Pythone 3.x má názov „tkinter“.
- Vytvorte hlavné okno (kontajner) : Hlavné okno slúži ako kontajner pre všetky prvky GUI, ktoré pridáte neskôr.
- Pridajte widgety do hlavného okna : Do hlavného okna môžete pridať ľubovoľný počet miniaplikácií, ako sú tlačidlá, štítky, vstupné polia atď., aby ste mohli navrhnúť rozhranie podľa potreby.
- Použite spúšťače udalostí na miniaplikácie : K miniaplikáciám môžete pripojiť spúšťače udalostí a definovať, ako budú reagovať na interakcie používateľa.
Vytvorte prvú aplikáciu Tkinter GUI
Používajú sa dve hlavné metódy, ktoré si používateľ musí zapamätať pri vytváraní aplikácie Python s GUI.
Tk()
Na vytvorenie hlavného okna ponúka tkinter metódu ‘Tk(názov obrazovky=Žiadne, základnéNázov=Žiadne, názov triedy=’Tk’, použitieTk=1)’. Ak chcete zmeniť názov okna, môžete zmeniť názov triedy na požadovaný. Základný kód použitý na vytvorenie hlavného okna aplikácie je:
mainloop()
Existuje metóda známa pod názvom mainloop(), ktorá sa používa, keď je vaša aplikácia pripravená na spustenie. mainloop() je nekonečná slučka používaná na spustenie aplikácie, čakanie na výskyt udalosti a spracovanie udalosti, kým sa okno nezatvorí.
Príklad
Python3 import tkinter m = tkinter.Tk() ''' widgets are added here ''' m.mainloop()
Výkon
Widget Tkinter
Existuje množstvo widgetov, ktoré môžete vložiť do svojej aplikácie tkinter. Niektoré z hlavných widgetov sú vysvetlené nižšie:
1. Označenie
Vzťahuje sa na zobrazovacie pole, do ktorého môžete vložiť ľubovoľný text alebo obrázok, ktorý je možné kedykoľvek aktualizovať podľa kódu. Všeobecná syntax je:
w=Label(master, option=value) master is the parameter used to represent the parent window.Python3
from tkinter import * root = Tk() w = Label(root, text='GeeksForGeeks.org!') w.pack() root.mainloop()
Výkon
2. Tlačidlo
Na pridanie tlačidla do vašej aplikácie sa používa tento widget. Všeobecná syntax je:
w=Button(master, option=value)
master je parameter používaný na reprezentáciu nadradeného okna. Existuje množstvo možností, ktoré sa používajú na zmenu formátu tlačidiel. Počet možností je možné zadať ako parametre oddelené čiarkami. Python3 >
>
import tkinter as tk r = tk.Tk() r.title('Counting Seconds') button = tk.Button(r, text='Stop', width=25, command=r.destroy) button.pack() r.mainloop()
Výkon
3. Vstup
Používa sa na zadávanie jednoriadkového textu od používateľa. Na zadávanie viacriadkového textu sa používa miniaplikácia Text. Všeobecná syntax je:
w=Entry(master, option=value)
master je parameter používaný na reprezentáciu nadradeného okna. Existuje množstvo možností, ktoré sa používajú na zmenu formátu miniaplikácie. Počet možností je možné zadať ako parametre oddelené čiarkami. Niektoré z nich sú uvedené nižšie.
Python3 from tkinter import * master = Tk() Label(master, text='First Name').grid(row=0) Label(master, text='Last Name').grid(row=1) e1 = Entry(master) e2 = Entry(master) e1.grid(row=0, column=1) e2.grid(row=1, column=1) mainloop()
Výkon
4. CheckButton
Výber ľubovoľného počtu možností zobrazením viacerých možností používateľovi ako prepínacích tlačidiel. Všeobecná syntax je:
w = CheckButton(master, option=value)
Existuje množstvo možností, ktoré sa používajú na zmenu formátu tohto widgetu. Počet možností je možné zadať ako parametre oddelené čiarkami. Niektoré z nich sú uvedené nižšie.
Python3 from tkinter import * master = Tk() var1 = IntVar() Checkbutton(master, text='male', variable=var1).grid(row=0, sticky=W) var2 = IntVar() Checkbutton(master, text='female', variable=var2).grid(row=1, sticky=W) mainloop()
Výkon
5. Tlačítko na Rádiu
Používa sa na to, aby používateľovi ponúkla možnosť výberu z viacerých možností. Používateľovi ponúka niekoľko možností a používateľ si musí vybrať jednu možnosť. Všeobecná syntax je:
w = RadioButton(master, option=value)
Existuje množstvo možností, ktoré sa používajú na zmenu formátu tohto widgetu. Počet možností je možné zadať ako parametre oddelené čiarkami. Niektoré z nich sú uvedené nižšie.
Python3 from tkinter import * root = Tk() v = IntVar() Radiobutton(root, text='GfG', variable=v, value=1).pack(anchor=W) Radiobutton(root, text='MIT', variable=v, value=2).pack(anchor=W) mainloop()
Výkon
6. Zoznam
Používateľovi ponúka zoznam, z ktorého môže používateľ prijať ľubovoľný počet možností. Všeobecná syntax je:
w = Listbox(master, option=value) master is the parameter used to represent the parent window.
Existuje množstvo možností, ktoré sa používajú na zmenu formátu miniaplikácie. Počet možností je možné zadať ako parametre oddelené čiarkami. Niektoré z nich sú uvedené nižšie.
Python3 from tkinter import * top = Tk() Lb = Listbox(top) Lb.insert(1, 'Python') Lb.insert(2, 'Java') Lb.insert(3, 'C++') Lb.insert(4, 'Any other') Lb.pack() top.mainloop()
Výkon
7. Posuvník
Vzťahuje sa na posuvný ovládač, ktorý sa použije na implementáciu uvedených widgetov. Všeobecná syntax je:
w = Scrollbar(master, option=value) master is the parameter used to represent the parent window.
Existuje množstvo možností, ktoré sa používajú na zmenu formátu miniaplikácie. Počet možností je možné zadať ako parametre oddelené čiarkami. Niektoré z nich sú uvedené nižšie.
Python3 from tkinter import * root = Tk() scrollbar = Scrollbar(root) scrollbar.pack(side=RIGHT, fill=Y) mylist = Listbox(root, yscrollcommand=scrollbar.set) for line in range(100): mylist.insert(END, 'This is line number' + str(line)) mylist.pack(side=LEFT, fill=BOTH) scrollbar.config(command=mylist.yview) mainloop()
Výkon
8. Ponuka
Používa sa na vytváranie všetkých druhov ponúk používaných aplikáciou. Všeobecná syntax je:
w = Menu(master, option=value) master is the parameter used to represent the parent window.
Existuje množstvo možností, ktoré sa používajú na zmenu formátu tohto widgetu. Počet možností je možné zadať ako parametre oddelené čiarkami. Niektoré z nich sú uvedené nižšie.
Python3 from tkinter import * root = Tk() menu = Menu(root) root.config(menu=menu) filemenu = Menu(menu) menu.add_cascade(label='File', menu=filemenu) filemenu.add_command(label='New') filemenu.add_command(label='Open...') filemenu.add_separator() filemenu.add_command(label='Exit', command=root.quit) helpmenu = Menu(menu) menu.add_cascade(label='Help', menu=helpmenu) helpmenu.add_command(label='About') mainloop()
Výkon
9. Combobox
Widget Combobox je vytvorený pomocou triedy ttk.Combobox z modulu tkinter.ttk. Hodnoty pre Combobox sú špecifikované pomocou parametra values. Predvolená hodnota sa nastaví pomocou metódy nastavenia. Funkcia obsluhy udalosti on_select je naviazaná na Combobox pomocou metódy väzby, ktorá aktualizuje štítok s vybratou položkou vždy, keď je vybratá položka.
Python3 import tkinter as tk from tkinter import ttk def on_select(event): selected_item = combo_box.get() label.config(text='Selected Item: ' + selected_item) root = tk.Tk() root.title('Combobox Example') # Create a label label = tk.Label(root, text='Selected Item: ') label.pack(pady=10) # Create a Combobox widget combo_box = ttk.Combobox(root, values=['Option 1', 'Option 2', 'Option 3']) combo_box.pack(pady=5) # Set default value combo_box.set('Option 1') # Bind event to selection combo_box.bind(' <>', on_select) root.mainloop() Výkon
10. Mierka
Používa sa na poskytnutie grafického posúvača, ktorý umožňuje vybrať ľubovoľnú hodnotu z tejto stupnice. Všeobecná syntax je:
w = Scale(master, option=value)master is the parameter used to represent the parent window.
Existuje množstvo možností, ktoré sa používajú na zmenu formátu miniaplikácie. Počet možností je možné zadať ako parametre oddelené čiarkami. Niektoré z nich sú uvedené nižšie.
Python3 from tkinter import * master = Tk() w = Scale(master, from_=0, to=42) w.pack() w = Scale(master, from_=0, to=200, orient=HORIZONTAL) w.pack() mainloop()
Výkon
jedenásť. Najvyššia úroveň
Tento widget je priamo ovládaný správcom okien. Na fungovanie nepotrebuje žiadne nadradené okno. Všeobecná syntax je:
w = TopLevel(master, option=value)
Existuje množstvo možností, ktoré sa používajú na zmenu formátu miniaplikácie. Počet možností je možné zadať ako parametre oddelené čiarkami. Niektoré z nich sú uvedené nižšie.
Python3 from tkinter import * root = Tk() root.title('GfG') top = Toplevel() top.title('Python') top.mainloop() Výkon
12. Správa
Vzťahuje sa na viacriadkový a neupraviteľný text. Funguje rovnako ako Label. Všeobecná syntax je:
w = Message(master, option=value) master is the parameter used to represent the parent window.
Existuje množstvo možností, ktoré sa používajú na zmenu formátu miniaplikácie. Počet možností je možné zadať ako parametre oddelené čiarkami. Niektoré z nich sú uvedené nižšie.
Python3 from tkinter import * main = Tk() ourMessage = 'This is our Message' messageVar = Message(main, text=ourMessage) messageVar.config(bg='lightgreen') messageVar.pack() main.mainloop()
Výkon
13. Tlačidlo Menu
Je súčasťou horného menu, ktoré zostáva v okne stále. Každé tlačidlo ponuky má svoju vlastnú funkciu. Všeobecná syntax je:
w = MenuButton(master, option=value) master is the parameter used to represent the parent window.
Existuje množstvo možností, ktoré sa používajú na zmenu formátu miniaplikácie. Počet možností je možné zadať ako parametre oddelené čiarkami. Niektoré z nich sú uvedené nižšie.
Python3 from tkinter import * top = Tk() mb = Menubutton ( top, text = 'GfG') mb.grid() mb.menu = Menu ( mb, tearoff = 0 ) mb['menu'] = mb.menu cVar = IntVar() aVar = IntVar() mb.menu.add_checkbutton ( label ='Contact', variable = cVar ) mb.menu.add_checkbutton ( label = 'About', variable = aVar ) mb.pack() top.mainloop()
Výkon
14. Ukazateľ postupu
Aplikácia Tkinter s widgetom Progressbar a tlačidlom na spustenie postupu. Po kliknutí na tlačidlo sa indikátor priebehu za krátky čas zaplní na 100 %, čím sa simuluje úloha, ktorej dokončenie si vyžaduje čas.
Python3 import tkinter as tk from tkinter import ttk import time def start_progress(): progress.start() # Simulate a task that takes time to complete for i in range(101): # Simulate some work time.sleep(0.05) progress['value'] = i # Update the GUI root.update_idletasks() progress.stop() root = tk.Tk() root.title('Progressbar Example') # Create a progressbar widget progress = ttk.Progressbar(root, orient='horizontal', length=300, mode='determinate') progress.pack(pady=20) # Button to start progress start_button = tk.Button(root, text='Start Progress', command=start_progress) start_button.pack(pady=10) root.mainloop() Výkon
pätnásť. SpinBox
Je to položka miniaplikácie „Entry“. Tu je možné zadať hodnotu výberom pevnej hodnoty čísel. Všeobecná syntax je:
w = SpinBox(master, option=value)
Existuje množstvo možností, ktoré sa používajú na zmenu formátu miniaplikácie. Počet možností je možné zadať ako parametre oddelené čiarkami. Niektoré z nich sú uvedené nižšie.
Python3 from tkinter import * master = Tk() w = Spinbox(master, from_=0, to=10) w.pack() mainloop()
Výkon:
16. Text
Ak chcete upraviť viacriadkový text a formátovať tak, ako sa má zobraziť. Všeobecná syntax je:
w =Text(master, option=value)
Existuje množstvo možností, ktoré sa používajú na zmenu formátu textu. Počet možností je možné zadať ako parametre oddelené čiarkami. Niektoré z nich sú uvedené nižšie.
Python3 from tkinter import * root = Tk() T = Text(root, height=2, width=30) T.pack() T.insert(END, 'techcodeview.com
BEST WEBSITE
') mainloop()
Výkon
17. Plátno
Používa sa na kreslenie obrázkov a iných zložitých rozložení, ako je grafika, text a widgety. Všeobecná syntax je:
w = Canvas(master, option=value) master is the parameter used to represent the parent window.
Existuje množstvo možností, ktoré sa používajú na zmenu formátu miniaplikácie. Počet možností je možné zadať ako parametre oddelené čiarkami. Niektoré z nich sú uvedené nižšie.
Python3 from tkinter import * master = Tk() w = Canvas(master, width=40, height=60) w.pack() canvas_height=20 canvas_width=200 y = int(canvas_height / 2) w.create_line(0, y, canvas_width, y ) mainloop()
Výstup
18. PannedWindow
Je to kontajnerový widget, ktorý sa používa na spracovanie množstva tabúľ v ňom usporiadaných. Všeobecná syntax je:
w = PannedWindow(master, option=value)
Master je parameter používaný na reprezentáciu nadradeného okna. Existuje množstvo možností, ktoré sa používajú na zmenu formátu miniaplikácie. Počet možností je možné zadať ako parametre oddelené čiarkami. Niektoré z nich sú uvedené nižšie.
Python3 from tkinter import * m1 = PanedWindow() m1.pack(fill=BOTH, expand=1) left = Entry(m1, bd=5) m1.add(left) m2 = PanedWindow(m1, orient=VERTICAL) m1.add(m2) top = Scale(m2, orient=HORIZONTAL) m2.add(top) mainloop()
Výkon
Možnosť farieb v Tkinter
Tento príklad demonštruje použitie rôznych farebných možností vo widgetoch Tkinter, vrátane aktívnych farieb pozadia a popredia, farieb pozadia a popredia, farieb zakázaných stavov a farieb výberu. Každá miniaplikácia v príklade zobrazuje inú farebnú možnosť a poskytuje vizuálnu reprezentáciu toho, ako tieto možnosti ovplyvňujú vzhľad miniaplikácií.
Python3 import tkinter as tk root = tk.Tk() root.title('Color Options in Tkinter') # Create a button with active background and foreground colors button = tk.Button(root, text='Click Me', activebackground='blue', activeforeground='white') button.pack() # Create a label with background and foreground colors label = tk.Label(root, text='Hello, Tkinter!', bg='lightgray', fg='black') label.pack() # Create an Entry widget with selection colors entry = tk.Entry(root, selectbackground='lightblue', selectforeground='black') entry.pack() root.mainloop() Výkon
Prečítajte si viac o zlepšení písma: Písmo Tkinter
Správa geometrie
Tkinter tiež ponúka prístup ku geometrickej konfigurácii widgetov, ktoré môžu organizovať widgety v nadradených oknách. Existujú hlavne tri triedy manažérov geometrie.
metóda pack().
Pred umiestnením do nadradeného miniaplikácie organizuje widgety do blokov.
Python3 import tkinter as tk root = tk.Tk() root.title('Pack Example') # Create three buttons button1 = tk.Button(root, text='Button 1') button2 = tk.Button(root, text='Button 2') button3 = tk.Button(root, text='Button 3') # Pack the buttons vertically button1.pack() button2.pack() button3.pack() root.mainloop() Výkon
metóda grid().
Usporiada widgety do mriežky (štruktúra podobná tabuľke) pred umiestnením do nadradeného widgetu.
Python3 import tkinter as tk root = tk.Tk() root.title('Grid Example') # Create three labels label1 = tk.Label(root, text='Label 1') label2 = tk.Label(root, text='Label 2') label3 = tk.Label(root, text='Label 3') # Grid the labels in a 2x2 grid label1.grid(row=0, column=0) label2.grid(row=0, column=1) label3.grid(row=1, column=0, columnspan=2) root.mainloop() Výkon
metóda place().
Organizuje widgety tak, že ich umiestňuje na konkrétne pozície, ktoré riadi programátor.
Python3 import tkinter as tk root = tk.Tk() root.title('Place Example') # Create a label label = tk.Label(root, text='Label') # Place the label at specific coordinates label.place(x=50, y=50) root.mainloop() Výkon