Start med at oprette skrivebordsprogrammer i Python med Tkinter GUI -biblioteket

Start med at oprette skrivebordsprogrammer i Python med Tkinter GUI -biblioteket

Tkinter er en grafisk brugergrænseflade (GUI) værktøjskasse, du bør prøve, hvis du vil udforske kraften i Python ved oprettelse af desktop -apps.





Her tager vi et kig på det grundlæggende i Tkinter GUI -modulet.





windows 10 bsod system service undtagelse

Tkinter opsætning

Normalt behøver du ikke installere tkinter separat, hvis du har installeret en senere version af Python, der starter med Python 3. Biblioteket fungerer dog muligvis ikke med gamle Python -versioner. Dette er et almindeligt problem for Mac- og Linux -brugere, da disse operativsystemer normalt leveres med ældre versioner af Python som standard.



Generelt at bruge tkinter modul, skal du sikre, at du downloader og installerer den nyeste kompatible version af Python på din pc fra den officielle python.org internet side.

Hvis du er på Mac, kan du alternativt downloade den nyeste version af ActiveTcl, a tkinter kompilator fra ActiveState .



Sådan bruges Tkinter

Tkinter afhænger af dens indbyggede TK klasse. Og det indpakker alle begivenhederne i GUI'en i en mainloop . Således er mainloop indpakning gør din tkinter kode eksekverbar.

Til at komme i gang med tkinter :





from tkinter import Tk
Tk().mainloop()

At køre koden ovenfor spinder tomt op tkinter ramme.

Tilpasningsfunktionerne i Tkinter er imidlertid i de indbyggede widgets.





For at bruge disse widgets kan du importere dem fra tkinter ved at udskifte fra tkinter import Tk med:

from 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 af tkinter :

t = Tk()
t.geometry('600x600')
t.title('Tk Tutorial')
t.mainloop()

Tkinter Label Widget

Tkinter lader dig skrive almindelige tekster direkte til GUI'en ved hjælp af Etiket widget:

t = Tk()
Label(t, text = 'MUO Tkinter tutorial').grid()
t.mainloop()

Det gitter () metode er imidlertid et alternativ til pakke() metode. Det holder dine widgets til GUI, hvilket gør dem synlige.

Du kan også angive en skrifttype til din Etiket tekst:

t = Tk()
Label(t, text = 'MUO Tkinter tutorial', font=(60)).grid()
t.mainloop()

Arbejde med knap -widgets i Tkinter

Knapper er nogle af de mest brugte widgets i tkinter . Og du kan tilføje disse klikbare knapper til din GUI ved hjælp af de forskellige indbyggede knap-widgets.

Sådan tilføjes en primær knap til din GUI ved hjælp af Knap widget:

t = Tk()
Button(t, text = 'Clickable', bg = 'black', fg = 'white').grid()
t.mainloop()

Det bg og fg nøgleord beskriver henholdsvis knappens baggrundsfarve og tekstens farve i den.

Du kan også justere dimensionen af ​​knappen ved at inkludere højde og bredde parametre:

t = Tk()
Button(t, text = 'Clickable', bg = 'black', fg = 'white', , ).grid()
t.mainloop()

Her er output for det:

uploade hd -video til facebook android

Og hvis du vil gøre knappen mere visuelt tiltalende, kan du inkludere en lettelse søgeord, og juster derefter dens kantbredde:

t = Tk()
Button(t, text='Clickable', bg='blue', fg='white',
height=2, width=10, relief=RAISED, borderwidth=6).grid()
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, 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()
Button(t, text=1, bg='black', fg='white').grid(row=1, column=1)
Button(t, text=2, bg='black', fg='white').grid(row=2, column=1)
Button(t, text=3, bg='black', fg='white').grid(row=3, column=1)
Button(t, text=4, bg='black', fg='white').grid(row=4, column=1)
t.mainloop()

En valgfri kommando nøgleord tilføjer imidlertid begivenheder til Knap widget. I det væsentlige forankrer den en valgfri funktion, der håndterer bestemte hændelser, når du klikker på en knap.

Koden herunder multiplicerer f.eks. Værdien af ​​hver knap med 6, når du klikker på den. Og det er baseret på en foruddefineret funktion:

def buttonpress(r):
r = 6*r
Label(t, text=r, font=(60)).grid(row=5, column=2)
t = Tk()
Button(t, text = 1, bg = 'black', fg = 'white', width = 10, height = 2,
command = lambda:buttonpress(1)).grid(row=1, column = 1, pady = 6)
Button(t, text = 2, bg = 'black', fg = 'white', width = 10,
command = lambda:buttonpress(2)).grid(row = 2, column = 1, pady = 6)
Button(t, text = 3, bg = 'black', fg = 'white', width = 10,
command = lambda:buttonpress(3)).grid(row = 3, column = 1, pady = 6)
Button(t, text = 4, bg = 'black', fg = 'white', width = 10,
command = lambda:buttonpress(4)).grid(row = 4, column = 1, pady = 6)
t.mainloop()

I ovenstående kode, knappetryk håndterer multiplikationshændelsen. Det Knap widget peger derefter på den hændelseshandler ved hjælp af en anonym lambda fungere.

Og hvis du er bekymret for puder søgeord, adskiller det 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 søgeord 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ær at læse og indsnævre.

Men du kan brug en for loop for at undgå denne gentagelse.

Så her er en kortere og bedre version af ovenstående kode:

def buttonpress(r):
r = 6*r
Label(t, text = r, font = (60)).grid(row = 5, column = 2)
t = Tk()
a = [1, 4, 6, 7]
for i in a:
j = lambda y = i:buttonpress(y)
Button(t, text = i, bg = 'black', fg = 'white', width = 10, height = 2,
command=j).grid(row = i, column = 1, pady = 6)
t.mainloop()

Lad os yderligere undersøge kraften i til loop for at tilføje menuknapper til din GUI:

from tkinter import *
t = Tk()
buttons = ['Files', 'Dashboard', 'Menu', 'Settings', 'Help']
m = 0
for i in range(len(buttons)):
# Get each text in the buttons array using a list index as m increases.
# Then let the column increase by 1 through the length of the array:

Menubutton(t, text=buttons[m], bg='blue', fg='white').grid(row=5, column=i)
m += 1
t.mainloop()

Det er også ganske let at tilføje kontrolknapper til din GUI:

t = Tk()
Checkbutton(t, text = 'Select option').grid()
t.mainloop()

Du er velkommen til at gange denne check -knap ved hjælp af til loop, som vi gjorde tidligere.

Sådan opretter du en dropdown -menu med Tkinter's Menu Widget

Det Menu widget lader dig 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 widgets -muligheder, du vil støde på, mens du foretager en dropdown:

  • add_cascade: Den viser en menuetiket og sætter den fast, 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 hændelseshandler.

Her er et dropdown -eksempel, der bruger disse tre muligheder:

from tkinter import *
t = Tk()
fileOptions = ['New', 'open', 'Save', 'Save as']
fileOptionsAfterseparator = ['Import', 'Export', 'Exit']
viewOptions = ['Transform', 'Edit', 'Create']
menuBar = Menu(t)
file = Menu(menuBar, tearoff=0)
for i in fileOptions:
file.add_command(label=i, command=None)
file.add_separator()
for i in fileOptionsAfterseparator:
file.add_command(label=i, command=None)
menuBar.add_cascade(label='File', menu=file)
View = Menu(menuBar, tearoff=0)
for i in viewOptions:
View.add_command(label=i, command=None)
menuBar.add_cascade(label='View', menu=View)
t.config(menu=menuBar)
t.mainloop()

Se hvordan det ser ud:

Tkinter -indstillingsmenu

An Valgmenu , i modsætning til Menu dropdown, skifter etiketten til en valgt indstilling.

Selvom du kan angive en standardetiketværdi for en indstillingsmenu, har den som standard ingen etiket.

Relaterede: Python -projektideer Velegnet til begyndere

Sådan oprettes en indstillingsmenu i tkinter :

t = Tk()
Omenu = StringVar() #set the variable type of the options
Omenu.set('MUO') #specify a default value for the menu icon
OptionMenu(t, Omenu, 'MUO', 'Amazon', 'Tutorial').grid()
t.mainloop()

Byg en genanvendelig desktop -app med Tkinter

Tkinter tilbyder en række funktioner, der hjælper dig med at lave interaktive GUI -desktop -apps. Selvom det muligvis ikke har mange fleksible forskønnende funktioner 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.

hvordan man overvåger wifi -brug derhjemme

Når det er sagt, kan du bygge en GUI desktop -lommeregner, lave en mini -teksteditor eller endda oprette en GUI -desktop -app 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.

Del Del Tweet E -mail GUI? Hvad er en grafisk brugergrænseflade?

Bruger du en GUI? Det er sandsynligt, at du har det, fordi du bruger dem hver eneste dag.

Læs Næste
Relaterede emner
  • Programmering
  • Python
Om forfatteren Idisou Omisola(94 artikler udgivet)

Idowu brænder for alt smart teknologi og produktivitet. I 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.

Mere fra Idowu Omisola

Abonner på vores nyhedsbrev

Tilmeld dig vores nyhedsbrev for at få tekniske tips, anmeldelser, gratis e -bøger og eksklusive tilbud!

Klik her for at abonnere