Comenceu a crear aplicacions d'escriptori a Python amb la biblioteca GUI de Tkinter

Comenceu a crear aplicacions d'escriptori a Python amb la biblioteca GUI de Tkinter

Tkinter és un conjunt d’eines d’interfície gràfica d’usuari (GUI) que heu de provar si voleu explorar el poder de Python en la creació d’aplicacions d’escriptori.





Aquí fem una ullada als conceptes bàsics del mòdul GUI de Tkinter.





Android 7 mou aplicacions a la targeta SD

Configuració de Tkinter

Normalment, no cal instal·lar-lo tkinter per separat si heu instal·lat una versió posterior de Python, començant per Python 3. És possible que la biblioteca no funcioni amb versions antigues de Python. Aquest és un problema comú per als usuaris de Mac i Linux, ja que aquests sistemes operatius solen venir per defecte amb versions anteriors de Python.





En general, per utilitzar el fitxer tkinter mòdul, assegureu-vos que descarregueu i instal·leu l’última versió compatible de Python al vostre PC des de l’oficial python.org lloc web.

Si utilitzeu Mac, podeu descarregar la versió més recent d'ActiveTcl, a tkinter compilador de ActiveState .



Com utilitzar Tkinter

Tkinter depèn de la seva funció integrada TK classe. I resumeix tots els esdeveniments de la GUI en un fitxer mainloop . Així, el mainloop embolcall fa el vostre tkinter codi executable.

Per començar tkinter :





from tkinter import Tk
Tk().mainloop()

Si executeu el codi anterior, es fa un buit tkinter marc.

Tanmateix, les funcions de personalització de Tkinter es troben als seus ginys integrats.





Per utilitzar aquests ginys, podeu importar-los des de tkinter substituint des de tkinter import Tk amb:

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

També podeu ajustar la mida de la finestra amb el fitxer geometria i especifiqueu un títol mitjançant el fitxer títol giny de tkinter :

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

Widget Etiqueta Tkinter

Tkinter us permet escriure textos senzills directament a la interfície gràfica d 'usuari mitjançant Etiqueta giny:

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

El quadrícula () el mètode, però, és una alternativa al pack () mètode. Enganxa els vostres ginys a la GUI, fent-los visibles.

També podeu especificar un tipus de lletra per al vostre fitxer Etiqueta text:

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

Treballar amb els ginys de botons a Tkinter

Els botons són alguns dels ginys més utilitzats a tkinter . I podeu afegir aquests botons que es poden fer clic a la vostra interfície gràfica d’usuari mitjançant els diversos widgets de botons integrats.

A continuació s’explica com afegir un botó principal a la vostra interfície gràfica d’usuari mitjançant el fitxer Botó giny:

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

El bg i F g les paraules clau descriuen el color de fons del botó i el color del text que hi ha dins, respectivament.

També podeu ajustar la dimensió del botó incloent el fitxer alçada i amplada paràmetres:

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

Aquí teniu el resultat:

com gravar trucades a l'iPhone sense aplicació

I si voleu que el botó sigui més atractiu visualment, podeu incloure un alleujament paraula clau i, a continuació, ajusteu-ne l'amplada de la vora:

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

I això té aquest aspecte:

Substitueix ALÇAT amb PIS per veure com passa això.

Podeu afegir tants botons com vulgueu. Però aneu amb compte d’evitar la superposició de contingut.

Per evitar la superposició, podeu especificar la posició de la fila i la columna per a cada botó:

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

Un opcional comandament No obstant això, la paraula clau afegeix esdeveniments al fitxer Botó giny. En essència, ancora una funció opcional que gestiona certs esdeveniments quan feu clic a un botó.

El codi següent, per exemple, multiplica el valor de cada botó per 6 quan hi feu clic. I es basa en una funció predefinida:

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

Al codi anterior, pulsació de botó gestiona l'esdeveniment de multiplicació. El Botó A continuació, el widget apunta a aquest gestor d'esdeveniments mitjançant un anònim lambda funció.

I si us preocupa coixinets paraula clau, separa clarament cada botó de la fila. Substituint això per padx separa els botons de la columna. I podeu utilitzar ambdues paraules clau simultàniament per separar els botons dels dos eixos com vulgueu.

Dit això, no voleu reinventar la roda per a cada botó tal com feia al codi anterior. Això alenteix el temps d’execució i, a més, dificulta la lectura i la reducció del codi.

Però podeu utilitzeu un bucle for per evitar aquesta repetició.

Així que aquí teniu una versió més curta i millor del codi anterior:

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

Explorem més a fons el poder de per bucle per afegir botons de menú a la vostra 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()

També és molt fàcil afegir botons de verificació a la vostra interfície gràfica d’usuari:

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

No dubteu a multiplicar aquest botó de verificació mitjançant el botó per bucle, com hem fet anteriorment.

Com crear un menú desplegable amb el widget de menú de Tkinter

El Menú El widget us permet dissenyar menús desplegables on es pot fer clic tkinter .

Com s’ha dit anteriorment, tkinter ofereix moltes opcions de widgets. I n'utilitzarà alguns mentre dissenyeu el menú desplegable.

A continuació, es mostren algunes de les opcions de ginys habituals que trobareu mentre feu un menú desplegable:

  • add_cascade: Mostra una etiqueta de menú i l’enganxa allà on pertany.
  • add_separator: Delimita els submenús i els agrupa en submenús superior i inferior.
  • add_comand: Aquí és on assigneu un nom al vostre submenú. En última instància, accepta un argument d’ordres on podeu especificar un controlador d’esdeveniments.

Aquí teniu un exemple desplegable que utilitza aquestes tres opcions:

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

Vegeu com es veu això:

Menú d’opcions de Tkinter

An Menú d’opcions , a diferència del Menú desplegable, canvia la seva etiqueta a una opció seleccionada.

Tot i que podeu especificar un valor d'etiqueta per defecte per a un menú d'opcions, no té cap etiqueta per defecte.

Relacionat: Idees de projecte Python aptes per a principiants

A continuació s'explica com crear un menú d'opcions a 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()

Creeu una aplicació d'escriptori reutilitzable amb Tkinter

Tkinter ofereix una sèrie de funcions que us ajuden a crear aplicacions interactives d’escriptori GUI. Tot i que pot ser que no tingui moltes funcions d’embelliment flexibles com alguns altres mòduls d’interfície gràfica d’usuari de Python, continua sent una eina útil que val la pena explorar. I si bé els exemples aquí només mostren alguns dels conceptes bàsics, tkinter ofereix funcions més avançades que podeu provar.

com esborrar una carpeta que s'utilitza

Dit això, podeu crear una calculadora d’escriptori GUI, fer un mini editor de text o fins i tot crear una aplicació d’escriptori GUI per gestionar els vostres inventaris. Si voleu estendre les vostres ales i convertir-vos en una gran interfície gràfica d’escriptori, fins i tot podeu consultar altres mòduls de Python.

Compartir Compartir Tweet Correu electrònic GUI? Què és una interfície gràfica d'usuari?

Feu servir una GUI? És probable que tingueu perquè els feu servir cada dia.

Llegiu a continuació
Temes relacionats
  • Programació
  • Python
Sobre l'autor Idisou Omisola(94 articles publicats)

Idowu és un apassionat de qualsevol tecnologia intel·ligent i productivitat. Durant el temps lliure, juga amb la codificació i canvia al tauler d’escacs quan s’avorreix, però també li agrada deixar de banda la rutina de tant en tant. La seva passió per mostrar a la gent el camí cap a la tecnologia moderna el motiva a escriure més.

Més de Idowu Omisola

Subscriu-te al nostre butlletí

Uniu-vos al nostre butlletí per obtenir consells tècnics, ressenyes, llibres electrònics gratuïts i ofertes exclusives.

Feu clic aquí per subscriure-us