Tkinter er en grafisk brugergrænseflade (GUI) værktøjskasse, du skal prøve, hvis du vil udforske kraften i Python til oprettelse af desktop-apps.
Her ser vi på det grundlæggende i Tkinter GUI-modulet.
Tkinter-opsætning
Normalt behøver du ikke at installere tkinter separat, hvis du har installeret en senere version af Python, startende med Python 3. Biblioteket fungerer muligvis ikke med gamle Python-versioner. Dette er et almindeligt problem for Mac- og Linux-brugere, da disse operativsystemer normalt kommer med ældre versioner af Python som standard.
Generelt at bruge tkinter modul, skal du sørge for at downloade og installere den nyeste kompatible version af Python på din pc fra den officielle python.org internet side.
Hvis du bruger Mac, kan du alternativt downloade den nyeste version af ActiveTcl, a tkinter kompilator fra ActiveState.
Sådan bruges Tkinter
Tkinter afhænger af dets indbyggede TK klasse. Og det indpakker alle begivenhederne i GUI'en i en mainloop. Således er den mainloop indpakning gør din tkinter kode eksekverbar.
At komme i gang med tkinter:
fra tkinter import Tk
Tk (). Mainloop ()
Når du kører ovenstående kode, bliver det tomt tkinter ramme.
Tilpasningsfunktionerne i Tkinter er dog i dens indbyggede widgets.
For at bruge disse widgets kan du importere dem fra tkinter ved at udskifte fra tkinter import Tk med:
fra tkinter import *
t = Tk ()
t.mainloop ()
Du kan også justere vinduesstørrelsen med geometri funktion, og angiv derefter en titel ved hjælp af titel widget til tkinter:
t = Tk ()
t.geometry ("600x600")
t.title ("Tk Tutorial")
t.mainloop ()
Med Tkinter kan du skrive almindelige tekster direkte til GUI ved hjælp af Etiket widget:
t = Tk ()
Etiket (t, tekst = "MUO Tkinter-tutorial"). Gitter ()
t.mainloop ()
Det gitter () metoden er dog et alternativ til pakke() metode. Det holder dine widgets fast i GUI'en og gør dem synlige.
Du kan også angive en skrifttype til din Etiket tekst:
t = Tk ()
Etiket (t, tekst = "MUO Tkinter tutorial", font = (60)). Gitter ()
t.mainloop ()
Knapper er nogle af de mest anvendte widgets i tkinter. Og du kan tilføje disse klikbare knapper til din GUI ved hjælp af de forskellige indbyggede knapwidgets.
Sådan tilføjes en primær knap til din GUI ved hjælp af Knap widget:
t = Tk ()
Knap (t, tekst = "Klikbar", bg = "sort", fg = "hvid"). Gitter ()
t.mainloop ()
Det bg og fg nøgleord beskriver henholdsvis baggrundsfarven på knappen og farven på teksten i den.
Du kan også justere dimensionen på knappen ved at medtage højde og bredde parametre:
t = Tk ()
Knap (t, tekst = "Klikbar", bg = "sort", fg = "hvid", højde = "2", bredde = "10"). Gitter ()
t.mainloop ()
Her er output for det:
Og hvis du vil gøre knappen mere visuelt tiltalende, kan du medtage en lettelse nøgleord, og juster derefter kantens bredde:
t = Tk ()
Knap (t, tekst = "Klikbar", bg = "blå", fg = "hvid",
højde = 2, bredde = 10, relief = hævet, kantbredde = 6). gitter ()
t.mainloop ()
Og det ser sådan ud:
Erstatte HÆVET med FLAD for at se, hvordan det kommer igennem.
Du kan tilføje så mange knapper, som du vil. Men du skal være forsigtig med at undgå overlapning af indhold.
For at undgå overlapning kan du angive række- og kolonneposition for hver knap:
t = Tk ()
Knap (t, tekst = 1, bg = "sort", fg = "hvid"). Gitter (række = 1, kolonne = 1)
Knap (t, tekst = 2, bg = "sort", fg = "hvid"). Gitter (række = 2, kolonne = 1)
Knap (t, tekst = 3, bg = "sort", fg = "hvid"). Gitter (række = 3, kolonne = 1)
Knap (t, tekst = 4, bg = "sort", fg = "hvid"). Gitter (række = 4, kolonne = 1)
t.mainloop ()
En valgfri kommando nøgleord tilføjer dog begivenheder til Knap widget. I det væsentlige forankrer den en valgfri funktion, der håndterer bestemte begivenheder, når du klikker på en knap.
Koden nedenfor multiplicerer f.eks. Værdien på hver knap med 6, når du klikker på den. Og det er baseret på en foruddefineret funktion:
def knaptryk (r):
r = 6 * r
Mærkat (t, tekst = r, skrifttype = (60)). Gitter (række = 5, kolonne = 2)
t = Tk ()
Knap (t, tekst = 1, bg = "sort", fg = "hvid", bredde = 10, højde = 2,
kommando = lambda: knaptryk (1)). gitter (række = 1, kolonne = 1, pady = 6)
Knap (t, tekst = 2, bg = "sort", fg = "hvid", bredde = 10,
kommando = lambda: knaptryk (2)). gitter (række = 2, kolonne = 1, pady = 6)
Knap (t, tekst = 3, bg = "sort", fg = "hvid", bredde = 10,
kommando = lambda: knaptryk (3)). gitter (række = 3, kolonne = 1, pady = 6)
Knap (t, tekst = 4, bg = "sort", fg = "hvid", bredde = 10,
kommando = lambda: knaptryk (4)). gitter (række = 4, kolonne = 1, pady = 6)
t.mainloop ()
I ovenstående kode, tryk på knappen håndterer multiplikationshændelsen. Det Knap widget peger derefter på den begivenhedshåndterer ved hjælp af en anonym lambda fungere.
Og hvis du er bekymret for dyster nøgleord, det adskiller tydeligt hver knap på tværs af rækken. Erstatter dette med padx adskiller knapperne på tværs af kolonnen. Og du kan bruge begge nøgleord samtidigt til at adskille knapperne på tværs af begge akser, som du ønsker.
Når det er sagt, vil du ikke genopfinde hjulet for hver knap, som du gjorde i den forrige kode. Dette bremser udførelsestiden, plus det gør din kode svært at læse og indsnævre.
Men det kan du brug en for loop for at undgå denne gentagelse.
Så her er en kortere og bedre version af ovenstående kode:
def knaptryk (r):
r = 6 * r
Mærkat (t, tekst = r, skrifttype = (60)). Gitter (række = 5, kolonne = 2)
t = Tk ()
a = [1, 4, 6, 7]
for jeg i en:
j = lambda y = i: knaptryk (y)
Knap (t, tekst = i, bg = "sort", fg = "hvid", bredde = 10, højde = 2,
kommando = j). gitter (række = i, kolonne = 1, pady = 6)
t.mainloop ()
Menu knapper og markeringsknapper
Lad os yderligere undersøge kraften i til loop for at tilføje menuknapper til din GUI:
fra tkinter import *
t = Tk ()
buttons = ["Filer", "Dashboard", "Menu", "Indstillinger", "Hjælp"]
m = 0
for jeg inden for rækkevidde (len (knapper)):
# Få hver tekst i knappernes array ved hjælp af et listeindeks, når m stiger.
# Lad så søjlen stige med 1 gennem længden af arrayet:
Menuknap (t, tekst = knapper [m], bg = "blå", fg = "hvid"). Gitter (række = 5, kolonne = i)
m + = 1
t.mainloop ()
Tilføjelse af kontrolknapper til din GUI er også ret let:
t = Tk ()
Kontrolknapp (t, tekst = "Vælg mulighed"). Gitter ()
t.mainloop ()
Du er velkommen til at multiplicere denne kontrolknap ved hjælp af til loop, som vi gjorde tidligere.
Det Menu med widget kan du designe klikbare rullemenuer i tkinter.
Som tidligere nævnt, tkinter tilbyder mange widgetmuligheder. Og du vil bruge nogle af dem, mens du designer din rullemenu.
Her er nogle af de almindelige widgetmuligheder, du støder på, mens du laver en rullemenu:
- tilføj_kaskade: Den viser en menuetiket og holder den, hvor den hører hjemme.
- add_separator: Det afgrænser undermenuer og grupperer dem i øvre og nedre undermenuer.
- tilføj kommando: Det er her, du giver din undermenu et navn. I sidste ende accepterer det et kommandoargument, hvor du kan angive en begivenhedshåndterer.
Her er et dropdown-eksempel, der bruger disse tre muligheder:
fra tkinter import *
t = Tk ()
fileOptions = ["Ny", "åben", "Gem", "Gem som"]
fileOptionsAfterseparator = ["Import", "Export", "Exit"]
viewOptions = ["Transform", "Edit", "Create"]
menuBar = Menu (t)
fil = Menu (menuBar, tearoff = 0)
for jeg i fileOptions:
file.add_command (label = i, command = Ingen)
file.add_separator ()
for i i fileOptionsAfterseparator:
file.add_command (label = i, command = Ingen)
menuBar.add_cascade (label = "File", menu = file)
View = Menu (menuBar, tearoff = 0)
for i in viewMuligheder:
View.add_command (label = i, command = Ingen)
menuBar.add_cascade (label = "Vis", menu = Vis)
t.config (menu = menuBar)
t.mainloop ()
Se hvordan det ser ud:
Menu til Tkinter-indstillinger
En Alternativmenui modsætning til Menu dropdown, skifter etiket til en valgt indstilling.
Selvom du kan angive en standardetiketværdi for en indstillingsmenu, har den som standard ingen etiket.
Relaterede: Python-projektidéer velegnet til begyndere
Sådan oprettes en indstillingsmenu i tkinter:
t = Tk ()
Omenu = StringVar () #sæt den variable type af indstillingerne
Omenu.set ("MUO") # specificer en standardværdi for menuikonet
OptionMenu (t, Omenu, "MUO", "Amazon", "Tutorial"). Gitter ()
t.mainloop ()
Byg en genanvendelig desktop-app med Tkinter
Tkinter tilbyder en række funktioner, der hjælper dig med at lave interaktive GUI-desktopapps. Selvom det måske ikke har mange fleksible forskønnelsesfunktioner som nogle andre Python GUI-moduler, er det stadig et praktisk værktøj, der er værd at udforske. Og mens eksemplerne her kun viser nogle af de grundlæggende begreber, tkinter tilbyder mere avancerede funktioner, som du kan prøve.
Når det er sagt, kan du oprette en GUI-desktop-lommeregner, oprette en mini-teksteditor eller endda oprette en GUI-desktopapp til at styre dine beholdninger. Hvis du vil sprede dine vinger og blive en desktop-GUI-major, kan du endda tjekke andre GUI-moduler i Python.
Bruger du en GUI? Chancerne er, du har, fordi du bruger dem hver eneste dag.
Læs Næste
- Programmering
- Python
Idowu brænder for alt smart tech og produktivitet. På fritiden leger han med kodning og skifter til skakbrættet, når han keder sig, men han elsker også at bryde væk fra rutinen en gang imellem. Hans passion for at vise folk vejen rundt om moderne teknologi motiverer ham til at skrive mere.
Abonner på vores nyhedsbrev
Deltag i vores nyhedsbrev for tekniske tip, anmeldelser, gratis e-bøger og eksklusive tilbud!
Klik her for at abonnere