Begin met het maken van desktop-apps in Python met de Tkinter GUI-bibliotheek

Begin met het maken van desktop-apps in Python met de Tkinter GUI-bibliotheek

Tkinter is een grafische gebruikersinterface (GUI) toolkit die je moet uitproberen als je de kracht van Python wilt ontdekken bij het maken van desktop-apps.





Hier bekijken we de basis van de Tkinter GUI-module.





computer start niet op zwart scherm

Tkinter-configuratie

Normaal gesproken hoeft u niet te installeren tkinter afzonderlijk als je een latere versie van Python hebt geïnstalleerd, te beginnen met Python 3. De bibliotheek werkt mogelijk niet met oude Python-versies. Dit is een veelvoorkomend probleem voor Mac- en Linux-gebruikers, aangezien deze besturingssystemen meestal standaard met oudere versies van Python worden geleverd.





Over het algemeen, om de te gebruiken tkinter module, zorg ervoor dat u de nieuwste compatibele versie van Python op uw pc downloadt en installeert vanaf de officiële python.org website.

Als u een Mac gebruikt, kunt u ook de nieuwste versie van ActiveTcl downloaden, a tkinter compiler van ActiveState .



Hoe Tkinter te gebruiken

Tkinter is afhankelijk van de ingebouwde TK klas. En het wikkelt alle gebeurtenissen in de GUI in een Hoofdlus . Dus de Hoofdlus wrapper maakt je tkinter code uitvoerbaar.

Om te beginnen met tkinter :





from tkinter import Tk
Tk().mainloop()

Als u de bovenstaande code uitvoert, wordt een lege pagina weergegeven tkinter kader.

De aanpassingsfuncties van Tkinter bevinden zich echter in de ingebouwde widgets.





Om deze widgets te gebruiken, kunt u ze importeren vanuit tkinter door te vervangen van tkinter import Tk met:

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

U kunt de venstergrootte ook aanpassen met de geometrie functie en geef vervolgens een titel op met de titel widget van tkinter :

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

Tkinter-labelwidget

Met Tkinter kunt u platte teksten rechtstreeks naar de GUI schrijven met behulp van de Label widget:

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

De rooster() methode is echter een alternatief voor de pak() methode. Het plakt je widgets aan de GUI, waardoor ze zichtbaar worden.

U kunt ook een lettertype opgeven voor uw Label tekst:

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

Werken met de knopwidgets in Tkinter

Knoppen zijn enkele van de meest gebruikte widgets in tkinter . En u kunt deze klikbare knoppen aan uw GUI toevoegen met behulp van de verschillende ingebouwde knopwidgets.

Hier leest u hoe u een primaire knop aan uw GUI kunt toevoegen met behulp van de Knop widget:

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

De bg en fg trefwoorden beschrijven respectievelijk de achtergrondkleur van de knop en de kleur van de tekst erin.

U kunt de afmeting van de knop ook aanpassen door de hoogte en breedte parameters:

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

Hier is de uitvoer daarvoor:

hoe weet ik of de SSD defect is?

En als u de knop visueel aantrekkelijker wilt maken, kunt u een opluchting trefwoord en pas vervolgens de randbreedte aan:

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

En dat ziet er zo uit:

Vervangen VERHOOGD met VLAK om te zien hoe dat komt.

U kunt zoveel knoppen toevoegen als u wilt. Maar zorg ervoor dat u overlap van inhoud vermijdt.

Om overlapping te voorkomen, kunt u de rij- en kolompositie voor elke knop specificeren:

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

een optionele opdracht trefwoord voegt echter gebeurtenissen toe aan de Knop widget. In wezen verankert het een optionele functie die bepaalde gebeurtenissen afhandelt wanneer u op een knop klikt.

De onderstaande code vermenigvuldigt bijvoorbeeld de waarde van elke knop met 6 wanneer u erop klikt. En het is gebaseerd op een vooraf gedefinieerde functie:

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

In de bovenstaande code, druk op de knop behandelt de vermenigvuldigingsgebeurtenis. De Knop widget verwijst vervolgens naar die gebeurtenishandler met behulp van een anonieme lambda functie.

En als je je zorgen maakt over de kussentjes trefwoord, scheidt het duidelijk elke knop in de rij. Dit vervangen door padx scheidt de knoppen over de kolom. En u kunt beide trefwoorden tegelijkertijd gebruiken om de knoppen naar wens over beide assen te scheiden.

Dat gezegd hebbende, je wilt niet voor elke knop het wiel opnieuw uitvinden zoals je deed in de vorige code. Dit vertraagt ​​de uitvoeringstijd, plus het maakt uw code moeilijk te lezen en te verfijnen.

Maar je kan gebruik een for-lus om deze herhaling te voorkomen.

Dus hier is een kortere en betere versie van de bovenstaande code:

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

Laten we de kracht van verder verkennen voor loop om menuknoppen aan uw GUI toe te voegen:

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

Het toevoegen van controleknoppen aan uw GUI is ook vrij eenvoudig:

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

Voel je vrij om die controleknop te vermenigvuldigen met de voor lus, zoals we eerder deden.

Een vervolgkeuzemenu maken met de menuwidget van Tkinter

De Menu widget laat je klikbare vervolgkeuzemenu's ontwerpen in tkinter .

Zoals eerder vermeld, tkinter biedt veel widget-opties. En u zult er enkele gebruiken bij het ontwerpen van uw vervolgkeuzemenu.

Hier zijn enkele van de veelvoorkomende widgets-opties die u tegenkomt tijdens het maken van een vervolgkeuzelijst:

  • add_cascade: Het geeft een menulabel weer en plakt het waar het hoort.
  • add_separator: Het bakent submenu's af en groepeert ze in bovenste en onderste submenu's.
  • add_commando: Hier geef je je submenu een naam. Uiteindelijk accepteert het een opdrachtargument waarin u een gebeurtenishandler kunt specificeren.

Hier is een dropdown-voorbeeld dat deze drie opties gebruikt:

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

Kijk hoe dat eruit ziet:

Tkinter-optiemenu

Een Optiemenu , in tegenstelling tot de Menu vervolgkeuzelijst, schakelt het label naar een geselecteerde optie.

Hoewel u een standaard labelwaarde voor een optiemenu kunt opgeven, heeft het standaard geen label.

Verwant: Ideeën voor Python-projecten die geschikt zijn voor beginners

Zo maakt u een optiemenu in 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()

Bouw een herbruikbare desktop-app met Tkinter

Tkinter biedt een scala aan functies waarmee u interactieve GUI-desktop-apps kunt maken. Hoewel het misschien niet veel flexibele verfraaiende functies heeft zoals sommige andere Python GUI-modules, is het nog steeds een handig hulpmiddel dat het ontdekken waard is. En hoewel de voorbeelden hier slechts enkele basisconcepten tonen, tkinter biedt meer geavanceerde functies die u kunt uitproberen.

active 2 vs Galaxy Watch 3

Dat gezegd hebbende, je kunt een GUI-bureaubladcalculator bouwen, een mini-teksteditor maken of zelfs een GUI-desktop-app maken om je inventarissen te beheren. Als je je vleugels wilt uitslaan en een desktop-GUI-major wilt worden, kun je zelfs andere GUI-modules van Python bekijken.

Deel Deel Tweeten E-mail GUI? Wat is een grafische gebruikersinterface?

Gebruik je een GUI? De kans is groot dat je ze hebt omdat je ze elke dag gebruikt.

Lees volgende
Gerelateerde onderwerpen
  • Programmeren
  • Python
Over de auteur Idisou Omisola(94 artikelen gepubliceerd)

Idowu is gepassioneerd door alles wat slimme technologie en productiviteit betreft. In zijn vrije tijd speelt hij met coderen en schakelt hij over naar het schaakbord als hij zich verveelt, maar hij vindt het ook heerlijk om af en toe uit de routine te stappen. Zijn passie om mensen de weg te wijzen in moderne technologie motiveert hem om meer te schrijven.

Meer van Idowu Omisola

Abonneer op onze nieuwsbrief

Word lid van onze nieuwsbrief voor technische tips, recensies, gratis e-boeken en exclusieve deals!

Klik hier om je te abonneren