Python er et allsidig programmeringsspråk som kan brukes til å implementere ulike typer applikasjoner. Den har mange typer moduler for å lage GUI (Graphical User Interface) baserte applikasjoner. Python tkinter er en av dem. Alle skrivebordsapplikasjoner kan enkelt implementeres ved å bruke tkinter-modulen. Det vil være bedre hvis du har grunnleggende kunnskap om Python-programmering for å lære bruken av Python tkinter-modulen. Ulike bruksområder for Python tkinter-modulen for å lage GUI-applikasjonene er vist i denne opplæringen.
Installer Tkinter-modulen
tkinter-modulen er ikke installert på Python som standard. Så du må kjøre følgende kommando for å installere tkinter-modulen i Python 3+-versjonen:
$ sudo apt installere python3-tk
Ulike Tkinter-widgeter
tkinter-modulen inneholder ulike widgets for ulike formål.
Widgetnavn | Hensikt |
Merkelapp | Den brukes til å vise hjelpemeldingen for brukeren. |
Knapp | Den brukes til å legge til forskjellige knapper i applikasjonen. |
Ramme | Det fungerer som en widgetbeholder som inneholder forskjellige typer widgets for å designe et organisert skjema. |
Inngang | Den brukes til å ta en enkeltlinjes tekst fra brukeren. |
Sjekkknapp | Den brukes til å legge til avmerkingsboksknappene for å ta flere inndata fra brukeren fra flere alternativer. |
Radioknapp | Den brukes til å legge til radioknappene for å ta en enkelt inngang fra brukeren fra flere alternativer. |
Combobox-knapp | Den brukes til å legge til en rullegardinliste for å ta ett enkelt innspill fra brukeren fra flere alternativer. |
ListBox | Den brukes til å legge til en listeboks for å ta flere inndata fra brukeren fra flere alternativer. |
Tekst | Den brukes til å ta en tekst med flere linjer fra brukeren. |
Beskjed | Den brukes til å vise meldingsvinduet for brukeren. |
Rullefelt | Den brukes til å legge til en rullefelt i vinduet for å rulle vinduet opp og ned. |
Meny-knapp | Den brukes til å vise menyen til brukeren. |
Meny | Den brukes til å vise menyelementene til brukeren. |
PanedWindow | Den fungerer som en widgetbeholder som inneholder de horisontale og vertikale rutene. |
Faner | Den brukes til å legge til et fanevindu i applikasjonen. |
Ulike Tkinter-eksempler
Bruken av noen vanlige tkinter-widgets er vist i de følgende eksemplene.
Eksempel 1: Lag en enkel GUI-applikasjon
Lag en Python-fil med følgende innhold som viser en dialogboks i midten av skjermen med en tittel og den spesielle høyden og bredden:
#Importer nødvendig modul
fra tkinter import *
#Opprett objekt for vinduet
tkobj = Tk ( )
#Angi tittelen på vinduet
tkobj.tittel ( 'Lær tkinter-modulen' )
#Angi høyden og bredden på vinduet
tkobj.geometri ( '300 x 150' )
#Sett visningsposisjonen til vinduet sentralt
tkobj.eval ( 'tk::PlaceWindow . senter' )
#Kjør Tkinter
tkobj.mainloop ( )
Produksjon:
Følgende utdata vises etter utføring av skriptet. En dialogboks med tittelen 'Lær tkinter-modul' vises:
Eksempel 2: Bruk av etikett og knapp
Lag en Python-fil med følgende skript som viser et vindu med en etikett og en dialogboks:
#Importer nødvendig modulfra tkinter import *
#Opprett et objekt for vinduet
tkobj = Tk ( )
#Angi tittelen på vinduet
tkobj.tittel ( 'Lær tkinter-modulen' )
#Angi høyden og bredden på vinduet
tkobj.geometri ( '400 x 150' )
#Definer etikettobjekt
lbl = Etikett ( tkobj, tekst = 'Det er et enkelt vindu' )
#Legg til etikett i vinduet
lbl.pack ( ipadx = 30 , ipads = tjue )
#Definer knappeobjekt
btn = Knapp ( tkobj, tekst = 'Klikk på meg' )
#Legg til-knapp i vinduet med posisjonen
btn.pack ( ipadx = 30 , ipads = 10 )
#Sett visningsposisjonen til vinduet sentralt
tkobj.eval ( 'tk::PlaceWindow . senter' )
#Kjør Tkinter
tkobj.mainloop ( )
Produksjon:
Et vindu med en etikett og en knapp vises i midten av skjermen etter at skriptet er utført.
Eksempel 3: Angi skriftfarge og bakgrunnsfarge
Lag en Python-fil med følgende skript som viser et vindu med en etikett og en fargerik knapp. Her brukes bakgrunnsattributtet til å angi bakgrunnsfargen til knappen og forgrunnsattributtet brukes til å angi skriftfargen til knappen:
#Importer nødvendig modulfra tkinter import *
#Opprett et objekt for vinduet
tkobj = Tk ( )
#Angi tittelen på vinduet
tkobj.tittel ( 'Lær tkinter-modulen' )
#Angi høyden og bredden på vinduet
tkobj.geometri ( '400 x 150' )
#Definer etikettobjekt
lbl = Etikett ( tkobj, tekst = 'Angi bakgrunns- og forgrunnsfarge' )
#Legg til etikett i vinduet
lbl.pack ( ipadx = 30 , ipads = tjue )
#Definer knappeobjekt med bakgrunn og forgrunnsfarge
btn = Knapp ( tkobj, tekst = 'Klikk på meg' , bakgrunn = 'blå' , forgrunnen = 'rød' )
#Legg til-knapp i vinduet med posisjonen
btn.pack ( ipadx = 30 , ipads = 8 )
#Sett visningsposisjonen til vinduet sentralt
tkobj.eval ( 'tk::PlaceWindow . senter' )
#Kjør Tkinter
tkobj.mainloop ( )
Produksjon:
Følgende vindu vises etter utføring av skriptet:
Eksempel 4: Bruk av ramme
I det følgende Python-skriptet vises en etikett og to knapper i en rammewidget. Lag en Python-fil med skriptet for å sjekke utdataene:
#Importer nødvendig modulfra tkinter import *
#Opprett et objekt for vinduet
tkobj = Tk ( )
#Angi tittelen på vinduet
tkobj.tittel ( 'tkinter modul' )
#Angi høyden og bredden på vinduet
tkobj.geometri ( '250 x 100' )
#Definer rammeobjekter
frm = Ramme ( tkobj )
frm.pack ( )
lframe = Ramme ( tkobj )
lframe.pack ( side =VENSTRE )
rframe = Ramme ( tkobj )
rframe.pack ( side =HØYRE )
#Definer etikett inne i rammen
lbl = Etikett ( frm, tekst = 'Bruk av ramme' , fg = 'blå' )
lbl.pack ( )
#Definer knapper inne i rammen
btn1 = Knapp ( lframe, tekst = '' , fg = 'svart' , bg = 'hvit' )
btn2.pack ( side =HØYRE )
#Sett visningsposisjonen til vinduet sentralt
tkobj.eval ( 'tk::PlaceWindow . senter' )
#Kjør Tkinter
tkobj.mainloop ( )
Produksjon:
Følgende utdata vises etter utføring av skriptet:
Eksempel 5: Håndter knapphendelsen
Bruken av meldingsboksen vises i følgende skript. Meldingsboksen vises når en knapp klikkes:
#Importer nødvendige modulerfra tkinter import *
fra tkinter import meldingsboks
#Opprett et objekt for vinduet
tkobj = Tk ( )
#Angi tittelen på vinduet
tkobj.tittel ( 'Lær tkinter-modulen' )
#Angi høyden og bredden på vinduet
tkobj.geometri ( '400 x 150' )
#Definer en funksjon for å vise en meldingsboks
def display ( ) :
meldingsboks.visinfo ( 'Informasjon' , 'Knappen er klikket.' )
#Lag etiketttekst med skriftfarge, stil og plassering
Merkelapp ( tkobj, tekst = 'Skrivebordsapplikasjon som bruker tkinter.' , fg = 'grønn' ) .pakke ( Paddy = 25 )
#Opprett en knapp med en knappbehandler
Knapp ( tkobj, tekst = 'Vis melding' , kommando =display ) .pakke ( )
#Sett visningsposisjonen til vinduet sentralt
tkobj.eval ( 'tk::PlaceWindow . senter' )
#Kjør Tkinter
tkobj.mainloop ( )
Produksjon:
Følgende vindu vises etter utføring av skriptet:
Følgende meldingsboks vises etter å ha trykket på knappen:
Eksempel 6: Ta et input fra brukeren
Flere widgets er tilgjengelige i tkinter-modulen for å ta innspill fra brukeren. Bruken av de vanligste widgetene vises i følgende skript. Lag en Python-fil med følgende kode for å sjekke utdataene:
#Importer nødvendige modulerfra tkinter import *
fra tkinter.ttk import Combobox
fra tkinter import ttk
importere tkinter som tk
fra tkinter import meldingsboks
#Opprett tkinter-objekt
tkobj = Tk ( )
#Angi tittelen på vinduet
tkobj.tittel ( 'Brukerinformasjonsskjema' )
#Angi høyden og bredden på vinduet
tkobj.geometri ( '550 x 320' )
#Definer en funksjon for å vise skjemaverdiene
def display_values ( ) :
#Les tekst på én linje
navn = 'Navn : ' + name_val.get ( ) + ' \n '
#Les den valgte alternativknappverdien
hvis kjønn.få ( ) == 1 :
g = 'Mann'
ellers:
g = 'Hunn'
g = 'Kjønn:' + g + ' \n '
#Les de valgte avkrysningsboksverdiene
spill = ''
hvis g1.få ( ) == 1 :
spill = 'Siriss'
hvis g2.få ( ) == 1 :
hvis spill ! = '' :
spill += ', ' + 'Fotball'
ellers:
spill = 'Fotball'
hvis g3.få ( ) == 1 :
hvis spill ! = '' :
spill += ', ' + 'Basketball'
ellers:
spill = 'Basketball'
spill = 'Spill:' + spill + ' \n '
#Les kombinasjonsboksverdiene
land = 'Land : ' + countryVal.get ( ) + ' \n '
#Les teksten med flere linjer
adresse = 'Adresse:' + adr.get ( '1.0' , 'slutt' ) + ' \n '
#Slå sammen alle verdier tatt av feltene
form_values = navn + g + spill + land + adresse
#Vis verdiene i meldingsboksen
meldingsboks.visinfo ( 'Brukerinformasjonsdetaljer' , form_values )
#Opprett en etikett og navnefeltet
Merkelapp ( tkobj, tekst = 'Navn : ' ) .plass ( x = 100 , og = tjue )
name_val = StringVar ( )
ttk.Entry ( tkobj, tekstvariabel =navn_val ) .pakke ( Padx = 220 , Paddy = tjue )
#Opprett en etikett og alternativknappen
Merkelapp ( tkobj, tekst = 'Kjønn:' ) .plass ( x = 100 , og = 60 )
kjønn = IntVar ( )
kjønn.sett ( 1 )
Radioknapp ( tkobj, tekst = 'Mann' , variabel =kjønn, verdi = 1 ) .plass ( x = 210 , og = 60 )
Radioknapp ( tkobj, tekst = 'Hunn' , variabel =kjønn, verdi = 2 ) .plass ( x = 290 , og = 60 )
#Opprett en etikett og avkrysningsboksknapp
Merkelapp ( tkobj, tekst = 'Favorittspill:' ) .plass ( x = 100 , og = 100 )
g1 = IntVar ( )
g2 = IntVar ( )
g3 = IntVar ( )
Sjekkknapp ( tkobj, tekst = 'Siriss' , variabel =g1 ) .plass ( x = 210 , og = 100 )
Sjekkknapp ( tkobj, tekst = 'Fotball' , variabel =g2 ) .plass ( x = 290 , og = 100 )
Sjekkknapp ( tkobj, tekst = 'Basketball' , variabel =g3 ) .plass ( x = 380 , og = 100 )
#Definer tuppelverdier
data = ( 'Bangladesh' , 'Japan' , 'USA' )
#Opprett etikett og kombinasjonsboks
Merkelapp ( tkobj, tekst = 'Land : ' ) .plass ( x = 100 , og = 140 )
countryVal = StringVar ( )
Combobox ( tkobj, verdier =data, tekstvariabel =countryVal ) .plass ( x = 220 , og = 140 )
#Opprett etikett og tekstfelt
Merkelapp ( tkobj, tekst = 'Adresse:' ) .plass ( x = 100 , og = 180 )
adr = ( tk.Tekst ( tkobj, høyde = 3 , bredde = tjue ) )
adr.sted ( x = 220 , og = 180 )
#Opprett en knapp med en knappbehandler
Knapp ( tkobj, tekst = 'Sende inn' , kommando =visningsverdier ) .plass ( x = 250 , og = 250 )
#Kjør Tkinter
tkobj.mainloop ( )
Produksjon:
Følgende vindu vises etter utføring av skriptet:
Fyll ut feltene i skjemaet og trykk på 'Send'-knappen.
Følgende meldingsboks med de innsendte verdiene vises:
Konklusjon
Metodene for å bruke Python tkinter-modulen for å lage GUI-applikasjonene er vist i denne opplæringen ved hjelp av flere eksempler.