Python oferuje wiele opcji tworzenia GUI (graficznego interfejsu użytkownika). Spośród wszystkich metod GUI najczęściej stosowaną metodą jest tkinter. Jest to standardowy interfejs Pythona dla zestawu narzędzi Tk GUI dostarczanego z Pythonem. Tkinter w Pythonie to najszybszy i najłatwiejszy sposób tworzenia aplikacji GUI. Tworzenie GUI przy użyciu Tkintera jest łatwym zadaniem.
Spis treści
- Utwórz pierwszą aplikację GUI Tkinter
- Widżet Tkinter
- Opcja koloru i czcionki w Tkinter
- Zarządzanie geometrią
Aby utworzyć aplikację Tkinter Python, wykonaj następujące podstawowe kroki:
- Zaimportuj moduł tkinter : Odbywa się to tak samo, jak importowanie dowolnego innego modułu Pyton . Należy zauważyć, że w Pythonie 2.x moduł nosi nazwę „Tkinter”, natomiast w Pythonie 3.x – „tkinter”.
- Utwórz główne okno (kontener) : Główne okno służy jako kontener dla wszystkich elementów GUI, które dodasz później.
- Dodaj widżety do okna głównego : Możesz dodać dowolną liczbę widżetów, takich jak przyciski, etykiety, pola wprowadzania itp., do głównego okna, aby zaprojektować interfejs według własnych upodobań.
- Zastosuj wyzwalacze zdarzeń do widżetów : Do widżetów możesz dołączyć wyzwalacze zdarzeń, aby określić sposób, w jaki reagują na interakcje użytkownika.
Utwórz pierwszą aplikację GUI Tkinter
Istnieją dwie główne metody, o których użytkownik musi pamiętać podczas tworzenia aplikacji w Pythonie z GUI.
polecenie systemu Windows arp
Tk()
Aby utworzyć okno główne, tkinter oferuje metodę „Tk(screenName=None, baseName=None, className=’Tk’, useTk=1)’. Aby zmienić nazwę okna, możesz zmienić nazwę klasy na żądaną. Podstawowy kod służący do stworzenia głównego okna aplikacji to:
główna pętla()
Istnieje metoda znana pod nazwą mainloop(), która jest używana, gdy aplikacja jest gotowa do uruchomienia. mainloop() to nieskończona pętla używana do uruchamiania aplikacji, oczekiwania na wystąpienie zdarzenia i przetwarzania zdarzenia, dopóki okno nie zostanie zamknięte.
Przykład
Python3 import tkinter m = tkinter.Tk() ''' widgets are added here ''' m.mainloop()>
Wyjście

Widżet Tkinter
Istnieje wiele widżetów, które możesz umieścić w swojej aplikacji Tkinter. Poniżej wyjaśniono niektóre z głównych widżetów:
1. Etykieta
Odnosi się do pola wystawowego, w którym można umieścić dowolny tekst lub obraz, który można zaktualizować w dowolnym momencie zgodnie z kodem. Ogólna składnia jest następująca:
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()>
Wyjście

2. Przycisk
Aby dodać przycisk w swojej aplikacji, używany jest ten widget. Ogólna składnia jest następująca:
w=Button(master, option=value)>
master to parametr używany do reprezentowania okna nadrzędnego. Istnieje wiele opcji używanych do zmiany formatu przycisków. Liczba opcji może być przekazana jako parametry oddzielone przecinkami.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()>
Wyjście

3. Wejście
Służy do wprowadzania przez użytkownika jednowierszowego tekstu. Do wprowadzania tekstu wielowierszowego używany jest widżet Tekst. Ogólna składnia jest następująca:
w=Entry(master, option=value)>
master to parametr używany do reprezentowania okna nadrzędnego. Istnieje wiele opcji służących do zmiany formatu widżetu. Liczba opcji może być przekazana jako parametry oddzielone przecinkami. Niektóre z nich są wymienione poniżej.
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()>
Wyjście
normalizacja w bazie danych

4. SprawdźPrzycisk
Aby wybrać dowolną liczbę opcji, wyświetlając użytkownikowi szereg opcji w postaci przycisków przełączania. Ogólna składnia jest następująca:
w = CheckButton(master, option=value)>
Istnieje wiele opcji umożliwiających zmianę formatu tego widżetu. Liczba opcji może być przekazana jako parametry oddzielone przecinkami. Niektóre z nich są wymienione poniżej.
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()>
Wyjście

5. Przycisk radiowy
Służy do oferowania użytkownikowi opcji wielokrotnego wyboru. Oferuje użytkownikowi kilka opcji, a użytkownik musi wybrać jedną opcję. Ogólna składnia jest następująca:
w = RadioButton(master, option=value)>
Istnieje wiele opcji umożliwiających zmianę formatu tego widżetu. Liczba opcji może być przekazana jako parametry oddzielone przecinkami. Niektóre z nich są wymienione poniżej.
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()>
Wyjście

6. Skrzynka na listy
Oferuje użytkownikowi listę, z której może zaakceptować dowolną liczbę opcji. Ogólna składnia jest następująca:
w = Listbox(master, option=value) master is the parameter used to represent the parent window.>
Istnieje wiele opcji służących do zmiany formatu widżetu. Liczba opcji może być przekazana jako parametry oddzielone przecinkami. Niektóre z nich są wymienione poniżej.
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()>
Wyjście

7. Pasek przewijania
Odnosi się do kontrolera slajdów, który będzie używany do implementowania wymienionych widżetów. Ogólna składnia jest następująca:
w = Scrollbar(master, option=value) master is the parameter used to represent the parent window.>
Istnieje wiele opcji służących do zmiany formatu widżetu. Liczba opcji może być przekazana jako parametry oddzielone przecinkami. Niektóre z nich są wymienione poniżej.
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()>
Wyjście

8. Menu
Służy do tworzenia wszelkiego rodzaju menu używanych przez aplikację. Ogólna składnia jest następująca:
w = Menu(master, option=value) master is the parameter used to represent the parent window.>
Istnieje wiele opcji umożliwiających zmianę formatu tego widżetu. Liczba opcji może być przekazana jako parametry oddzielone przecinkami. Niektóre z nich są wymienione poniżej.
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()>
Wyjście

9. Combobox
Widżet Combobox tworzony jest przy użyciu klasy ttk.Combobox z modułu tkinter.ttk. Wartości Comboboxa określa się za pomocą parametru wartości. Wartość domyślna jest ustawiana przy użyciu metody set. Funkcja obsługi zdarzeń on_select jest powiązana z Comboboxem przy użyciu metody bind, która aktualizuje etykietę wybranym elementem za każdym razem, gdy element jest wybrany.
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()> Wyjście

10. Skala
Służy do udostępnienia graficznego suwaka umożliwiającego wybranie dowolnej wartości z danej skali. Ogólna składnia jest następująca:
w = Scale(master, option=value)master is the parameter used to represent the parent window.>
Istnieje wiele opcji służących do zmiany formatu widżetu. Liczba opcji może być przekazana jako parametry oddzielone przecinkami. Niektóre z nich są wymienione poniżej.
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()>
Wyjście

jedenaście. Najwyższy poziom
Ten widget jest bezpośrednio kontrolowany przez menedżera okien. Do pracy nie jest potrzebne żadne okno nadrzędne. Ogólna składnia jest następująca:
w = TopLevel(master, option=value)>
Istnieje wiele opcji służących do zmiany formatu widżetu. Liczba opcji może być przekazana jako parametry oddzielone przecinkami. Niektóre z nich są wymienione poniżej.
testy regresyjne w testowaniu oprogramowaniaPython3
from tkinter import * root = Tk() root.title('GfG') top = Toplevel() top.title('Python') top.mainloop()> Wyjście

12. Wiadomość
Dotyczy tekstu wielowierszowego i nieedytowalnego. Działa tak samo jak Label. Ogólna składnia jest następująca:
w = Message(master, option=value) master is the parameter used to represent the parent window.>
Istnieje wiele opcji służących do zmiany formatu widżetu. Liczba opcji może być przekazana jako parametry oddzielone przecinkami. Niektóre z nich są wymienione poniżej.
Python3 from tkinter import * main = Tk() ourMessage = 'This is our Message' messageVar = Message(main, text=ourMessage) messageVar.config(bg='lightgreen') messageVar.pack() main.mainloop()>
Wyjście

13. Przycisk MENU
Jest to część menu górnego, które cały czas pozostaje w oknie. Każdy przycisk menu ma swoją własną funkcjonalność. Ogólna składnia jest następująca:
w = MenuButton(master, option=value) master is the parameter used to represent the parent window.>
Istnieje wiele opcji służących do zmiany formatu widżetu. Liczba opcji może być przekazana jako parametry oddzielone przecinkami. Niektóre z nich są wymienione poniżej.
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()>
Wyjście

14. Pasek postępu
Aplikacja Tkinter z widżetem Progressbar i przyciskiem rozpoczynającym postęp. Po kliknięciu przycisku pasek postępu w krótkim czasie zapełnia się do 100%, symulując wykonanie zadania wymagającego czasu.
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()> Wyjście

piętnaście. SpinBox
Jest to wpis widżetu „Wejście”. Tutaj wartość można wprowadzić, wybierając stałą wartość liczbową. Ogólna składnia jest następująca:
w = SpinBox(master, option=value)>
Istnieje wiele opcji służących do zmiany formatu widżetu. Liczba opcji może być przekazana jako parametry oddzielone przecinkami. Niektóre z nich są wymienione poniżej.
Python3 from tkinter import * master = Tk() w = Spinbox(master, from_=0, to=10) w.pack() mainloop()>
Wyjście:

16. Tekst
Aby edytować tekst wielowierszowy i sformatować sposób, w jaki ma być wyświetlany. Ogólna składnia jest następująca:
w =Text(master, option=value)>
Istnieje wiele opcji służących do zmiany formatu tekstu. Liczba opcji może być przekazana jako parametry oddzielone przecinkami. Niektóre z nich są wymienione poniżej.
Python3 from tkinter import * root = Tk() T = Text(root, height=2, width=30) T.pack() T.insert(END, 'techcodeview.com
BEST WEBSITE
') mainloop()>
Wyjście

17. Płótno
Służy do rysowania obrazów i innych złożonych układów, takich jak grafika, tekst i widżety. Ogólna składnia jest następująca:
w = Canvas(master, option=value) master is the parameter used to represent the parent window.>
Istnieje wiele opcji służących do zmiany formatu widżetu. Liczba opcji może być przekazana jako parametry oddzielone przecinkami. Niektóre z nich są wymienione poniżej.
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()>
Wyjście

18. PannedWindow
Jest to widżet kontenerowy, który służy do obsługi liczby rozmieszczonych w nim paneli. Ogólna składnia jest następująca:
w = PannedWindow(master, option=value)>
Master to parametr używany do reprezentowania okna nadrzędnego. Istnieje wiele opcji służących do zmiany formatu widżetu. Liczba opcji może być przekazana jako parametry oddzielone przecinkami. Niektóre z nich są wymienione poniżej.
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()>
Wyjście

Opcja koloru w Tkinter
Ten przykład ilustruje użycie różnych opcji kolorów w widżetach Tkinter, w tym aktywnych kolorów tła i pierwszego planu, kolorów tła i pierwszego planu, kolorów stanu wyłączonego i kolorów zaznaczenia. Każdy widżet w przykładzie ma inną opcję koloru, zapewniając wizualną reprezentację wpływu tych opcji na wygląd widżetów.
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()> Wyjście

Dowiedz się więcej, aby ulepszyć czcionkę: Czcionka Tkinter
Zarządzanie geometrią
Tkinter oferuje również dostęp do geometrycznej konfiguracji widżetów, która może organizować widżety w oknach nadrzędnych. Istnieją głównie trzy klasy klas menedżerów geometrii.
metoda pakowania().
Organizuje widżety w bloki przed umieszczeniem ich w widżecie nadrzędnym.
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()> Wyjście

metoda grid().
Organizuje widżety w siatce (struktura przypominająca tabelę) przed umieszczeniem w widżecie nadrzędnym.
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()> Wyjście
liczba pierwsza java

metoda place().
Organizuje widżety, umieszczając je w określonych miejscach wskazanych przez programistę.
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()> Wyjście
