Börja skapa skrivbordsappar i Python med Tkinter GUI -biblioteket

Börja skapa skrivbordsappar i Python med Tkinter GUI -biblioteket

Tkinter är en verktygslåda för grafiskt användargränssnitt (GUI) som du bör testa om du vill utforska kraften hos Python när du skapar skrivbordsappar.





Här tar vi en titt på grunderna i Tkinter GUI -modulen.





Windows 7 vs Windows 10 2018

Tkinter Setup

Normalt behöver du inte installera tkinter separat om du har installerat en senare version av Python, som börjar med Python 3. Men biblioteket kanske inte fungerar med gamla Python -versioner. Detta är ett vanligt problem för Mac- och Linux -användare, eftersom dessa operativsystem vanligtvis kommer med äldre versioner av Python som standard.





Generellt för att använda tkinter modul, se till att du laddar ner och installerar den senaste kompatibla versionen av Python på din dator från den officiella python.org hemsida.

Om du använder Mac kan du alternativt ladda ner den senaste versionen av ActiveTcl, a tkinter kompilator från ActiveState .



Hur man använder Tkinter

Tkinter beror på dess inbyggda TK klass. Och det sammanfattar alla händelser inom GUI i en mainloop . Således mainloop omslag gör din tkinter kod körbar.

Att komma igång med tkinter :





from tkinter import Tk
Tk().mainloop()

Genom att köra koden ovan blir det tomt tkinter ram.

Anpassningsfunktionerna i Tkinter finns dock i dess inbyggda widgets.





Om du vill använda dessa widgets kan du importera dem från tkinter genom att byta ut från tkinter import Tk med:

from tkinter import *
t = Tk()
t.mainloop()

Du kan också justera fönstrets storlek med geometri och ange sedan en titel med titel widget av tkinter :

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

Tkinter Label Widget

Med Tkinter kan du skriva vanliga texter direkt till GUI med hjälp av Märka widget:

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

De rutnät() metoden är dock ett alternativ till packa() metod. Det håller dina widgets till GUI, vilket gör dem synliga.

Du kan också ange ett teckensnitt för din Märka text:

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

Arbeta med knapp widgets i Tkinter

Knappar är några av de mest använda widgetarna i tkinter . Och du kan lägga till dessa klickbara knappar i ditt GUI med hjälp av de olika inbyggda knappwidgetarna.

Så här lägger du till en primärknapp i ditt GUI med Knapp widget:

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

De bg och fg nyckelord beskriver knappens bakgrundsfärg respektive textens färg.

Du kan också justera dimensionen på knappen genom att inkludera höjd och bredd parametrar:

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

Här är utdata för det:

hur man kontrollerar vilket moderkort du har

Och om du vill göra knappen mer visuellt tilltalande kan du inkludera en lättnad nyckelord och justera sedan dess kantbredd:

t = Tk()
Button(t, text='Clickable', bg='blue', fg='white',
height=2, width=10, relief=RAISED, borderwidth=6).grid()
t.mainloop()

Och det ser ut så här:

Byta ut UPPFOSTRAD med PLATT för att se hur det går igenom.

Du kan lägga till så många knappar du vill. Men du ska vara försiktig så att du inte undviker innehållsöverlappning.

För att undvika överlappning kan du ange rad- och kolumnposition för varje knapp:

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()

Valfritt kommando nyckelordet lägger dock till händelser i Knapp widget. I grunden förankrar den en valfri funktion som hanterar vissa händelser när du klickar på en knapp.

Koden nedan multiplicerar till exempel värdet för varje knapp med 6 när du klickar på den. Och det är baserat på en fördefinierad 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 koden ovan, knapptryckning hanterar multiplikationshändelsen. De Knapp widgeten pekar sedan på den händelsehanteraren med en anonym lambda fungera.

Och om du är orolig för dynor nyckelord, det skiljer tydligt varje knapp över raden. Ersätter detta med padx skiljer knapparna över kolumnen. Och du kan använda båda sökorden samtidigt för att skilja knapparna över båda axlarna som du vill.

Som sagt, du vill inte uppfinna hjulet för varje knapp som du gjorde i föregående kod. Detta saktar ner körningstiden, plus att det gör din kod svår att läsa och begränsa.

Men du kan använd en for loop för att undvika denna upprepning.

Så här är en kortare och bättre version av ovanstående kod:

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()

Låt oss vidare utforska kraften i för loop för att lägga till menyknappar i ditt 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()

Att lägga till kontrollknappar i ditt GUI är också ganska enkelt:

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

Multiplicera gärna den här kontrollknappen med för loop, som vi gjorde tidigare.

Hur man skapar en rullgardinsmeny med Tkinter's Menu Widget

De Meny widget låter dig designa klickbara rullgardinsmenyer i tkinter .

Som tidigare nämnts, tkinter erbjuder många widgetalternativ. Och du kommer att använda några av dem när du utformar din rullgardinsmeny.

Här är några av de vanliga widgetalternativen du kommer att stöta på när du gör en rullgardinsmeny:

  • add_cascade: Den visar en menyetikett och klistrar den där den hör hemma.
  • add_separator: Det avgränsar undermenyer och grupperar dem i övre och nedre undermenyer.
  • add_command: Det är här du ger din undermeny ett namn. I slutändan accepterar det ett kommandoargument där du kan ange en händelsehanterare.

Här är ett nedrullningsexempel som använder dessa tre alternativ:

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 hur det ser ut:

Tkinter -alternativmeny

Ett Alternativmeny , till skillnad från Meny rullgardinsmenyn, byter etikett till ett valt alternativ.

Även om du kan ange ett standardetikettvärde för en alternativmeny, har den ingen etikett som standard.

Relaterad: Python -projektidéer lämpliga för nybörjare

Så här skapar du en alternativmeny 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()

Bygg en återanvändbar skrivbordsapp med Tkinter

Tkinter erbjuder en rad funktioner som hjälper dig att skapa interaktiva GUI -skrivbordsappar. Även om det kanske inte har många flexibla försköningsfunktioner som vissa andra Python GUI -moduler, är det fortfarande ett praktiskt verktyg som är värt att utforska. Och medan exemplen här bara visar några av de grundläggande begreppen, tkinter erbjuder mer avancerade funktioner som du kan testa.

hur man installerar python på ubuntu

Med det sagt kan du bygga en GUI -skrivbordskalkylator, göra en mini -textredigerare eller till och med skapa en GUI -skrivbordsapp för att hantera dina inventeringar. Om du vill sprida dina vingar och bli en desktop GUI -major kan du till och med kolla in andra GUI -moduler i Python.

Dela med sig Dela med sig Tweet E-post GUI? Vad är ett grafiskt användargränssnitt?

Använder du ett GUI? Chansen är stor att du har det eftersom du använder dem varje dag.

Läs Nästa
Relaterade ämnen
  • Programmering
  • Pytonorm
Om författaren Idisou Omisola(94 artiklar publicerade)

Idowu brinner för allt smart teknik och produktivitet. På fritiden leker han med kodning och byter till schackbrädet när han har tråkigt, men han älskar också att bryta sig från rutinen då och då. Hans passion för att visa människor vägen kring modern teknik motiverar honom att skriva mer.

Mer från Idowu Omisola

Prenumerera på vårt nyhetsbrev

Gå med i vårt nyhetsbrev för tekniska tips, recensioner, gratis e -böcker och exklusiva erbjudanden!

Klicka här för att prenumerera