Python: Tkinter: Unterschied zwischen den Versionen
Flinh1 (Diskussion | Beiträge) |
Flinh1 (Diskussion | Beiträge) (→Quellen) |
||
(44 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
<div align="right"><big>'''[https://flinkwiki.de/index.php?title=Kategorie:Alle_Seiten Seitenübersicht]'''</big></div> | <div align="right"><big>'''[https://flinkwiki.de/index.php?title=Kategorie:Alle_Seiten Seitenübersicht]'''</big></div> | ||
<div align="right">'''[[Python|Zur Seite "Python"]]'''</div> | <div align="right">'''[[Python|Zur Seite "Python"]]'''</div> | ||
+ | <div align="right">'''[[Python: Klassen|Zur Seite "Python: Klassen"]]'''</div> | ||
+ | <div align="right">'''[[Python: Module|Zur Seite "Python: Module"]]'''</div> | ||
<div align="right">'''[[Python: Turtle|Zur Seite "Python: Turtle"]]'''</div> | <div align="right">'''[[Python: Turtle|Zur Seite "Python: Turtle"]]'''</div> | ||
− | <div align="right">'''[[Python: | + | <div align="right">'''[[Python: Pygame|Zur Seite "Python: Pygame"]]'''</div> |
+ | <div align="right">'''[[Python: PyQT|Zur Seite "Python: PyQT"]]'''</div> | ||
+ | <div align="right">'''[[Python: Anaconda|Zur Seite "Python: Anaconda"]]'''</div> | ||
+ | |||
+ | |||
== Allgemeines == | == Allgemeines == | ||
Zeile 8: | Zeile 14: | ||
Tkinter ist die Python-Schnittstelle zu Tk. Tkint ist ein Akronym für "Tk interface". Tk wurde ursprünglich als eine GUI-Erweiterung für Tcl entwickelt. | Tkinter ist die Python-Schnittstelle zu Tk. Tkint ist ein Akronym für "Tk interface". Tk wurde ursprünglich als eine GUI-Erweiterung für Tcl entwickelt. | ||
− | * https:// | + | * https://tkdocs.com/ (Referenzseite) |
+ | |||
+ | === Installation === | ||
+ | |||
+ | apt install python3-tk | ||
+ | |||
+ | ---- | ||
+ | |||
+ | === Installation und Version testen === | ||
+ | |||
+ | [[Datei:TkinterTest.png|mini|left]] | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
− | |||
− | |||
− | + | Version von Tcl/Tk ermitteln: | |
+ | >>> import tkinter | ||
+ | >>> tkinter.Tcl().eval('info patchlevel') | ||
+ | '8.6.10' | ||
---- | ---- | ||
+ | |||
== Import == | == Import == | ||
Zeile 72: | Zeile 105: | ||
[https://www.python-kurs.eu/python_tkinter.php] | [https://www.python-kurs.eu/python_tkinter.php] | ||
+ | ---- | ||
+ | == Farben == | ||
+ | |||
+ | Es können die üblichen englischen Farbnamen ('red') verwendet werden. Um sicher zu sein, dass keine Fehler auftreten, ist es besser, die RGB-Bezeichnungen zu verwenden, entweder als Tupel ( (255,0,0) ) oder in hexadezimaler Schreibweise ('#ff0000') | ||
+ | |||
+ | Zur Farbauswahl kann man in das Skript den Colorchooser aufrufen: | ||
+ | from tkinter.colorchooser import askcolor | ||
+ | farbe = askcolor() | ||
+ | ''farbe[0]'' gibt den Code in Tupel-Schreibweise aus, ''farbe[1]'' den hexadezimalen Code. | ||
+ | |||
+ | ---- | ||
+ | |||
+ | == Canvas == | ||
+ | === Grundgerüst === | ||
+ | <nowiki> | ||
+ | from tkinter import * | ||
+ | tk = Tk() | ||
+ | c = Canvas(tk,width = 500, height = 500) | ||
+ | c.pack() | ||
+ | c.create_line(0,0,500,500) | ||
+ | </nowiki> | ||
+ | Vergleich zu Turtle: | ||
+ | <nowiki> | ||
+ | import turtle as t | ||
+ | t.setup(width = 500, height = 500) | ||
+ | t.up() | ||
+ | t.goto(-250,250) | ||
+ | t.down() | ||
+ | t.goto(250,-250) | ||
+ | </nowiki> | ||
+ | |||
+ | Die Koordinaten werden von der linken oberen Ecke aus gedacht. | ||
+ | |||
+ | ---- | ||
+ | |||
+ | === Funktionen === | ||
+ | * create_line(x1,y1,x2,y2) | ||
+ | * create_rectangle(x1,y1,x2,y2) # optional zum Ausfüllen: create_rectangle(x1,y1,x2,y2,fill = 'farbe')) | ||
+ | * create_arc(x1,y1,x2,y2,extent = Winkelgrad, style = ARC) # z. B.: c.create_arc(10,10,200,80,extent = 359, style = ARC) | ||
+ | * create_polygon(x1,y1,x2,y2,xn,yn,fill = ''farbe'', outline = ''farbe'') # z. B.: c.create_polygon(10,10,100,10,100,120,90,130,30,60, fill = "", outline = 'black') | ||
+ | * create_text(x,y, text, fill, font) # z. B. c.create_text(150,100,text = "Hier kommt Freund Hein!", fill = farbe[1],font = ('Arial', 20)) | ||
+ | * create_image(x,y, anchor = ''Himmelsrichtung'', image = ''meinBild'') # z. B.: meinBild = PhotoImage(file = '../koeln201906.gif'); c.create_image(0,0, anchor = NW, image = meinBild) # NW = northwest = links oben | ||
+ | * move(ID,x,y) # bewegt Objekt Richtung x,y | ||
+ | * bind_all(''ereignis'', ''funktion'') # Bindet ein Ereignis an eine Funktion. Beispiel: c.bind_all('<KeyPress-Return>', bewegeObjekt) | ||
+ | * itemconfig(''objekt'',fill = ''farbe'', outline = ''farbe'') # Statt des Variablennamens kann für das Objekt auch die ID (z. B. 1) verwendet werden. | ||
+ | * winfo_height() # gibt die aktuelle Höhe der Leinwand wieder. # Funktioniert nach <code>update()</code> | ||
+ | * coords(''objekt'' oder ID) # gibt die aktuellen x- und y- Koordinaten des Objekts zurück. | ||
---- | ---- | ||
− | == | + | |
+ | === Events === | ||
+ | |||
+ | * <KeyPress-Return> | ||
+ | * <KeyPress-Up> | ||
+ | * <KeyPress-Down> | ||
+ | * <KeyPress-Left> | ||
+ | * <KeyPress-Right> | ||
+ | |||
+ | ''keysyms'' sind Werte, die Tk als Namen für bestimmte Tasten erkennt: | ||
+ | <nowiki> | ||
+ | def bewegeObjekt(aktion): | ||
+ | if aktion.keysym == 'Up': | ||
+ | c.move(1, 0, -3) | ||
+ | elif aktion.keysym == 'Down': | ||
+ | c.move(1, 0, 3) | ||
+ | elif aktion.keysym == 'Left': | ||
+ | c.move(1, -3, 0) | ||
+ | else: | ||
+ | c.move(1, 3, 0) | ||
+ | </nowiki> | ||
+ | |||
+ | ---- | ||
+ | |||
+ | == Beispiele == | ||
+ | |||
+ | === Button === | ||
+ | <nowiki> | ||
+ | from tkinter import * | ||
+ | def hallowelt(): | ||
+ | print("Hallo Welt") | ||
+ | |||
+ | tk = Tk() | ||
+ | btn = Button(tk,text = "Hier klicken",command = hallowelt) | ||
+ | btn.pack() | ||
+ | </nowiki> | ||
+ | |||
+ | ---- | ||
+ | |||
+ | === Textbox === | ||
<nowiki> | <nowiki> | ||
Zeile 97: | Zeile 216: | ||
</nowiki> | </nowiki> | ||
[https://www.youtube.com/watch?v=vtsS2aQ4LLw] | [https://www.youtube.com/watch?v=vtsS2aQ4LLw] | ||
+ | |||
+ | ---- | ||
+ | === Animation mit move() === | ||
+ | |||
+ | <nowiki> | ||
+ | from tkinter import * | ||
+ | import time | ||
+ | tk = Tk() | ||
+ | c = Canvas(tk, width = 400, height = 400) | ||
+ | c.pack() | ||
+ | c.create_polygon(10,10,10,60,50,35) | ||
+ | for i in range(60): | ||
+ | c.move(1,5,5) | ||
+ | c.update() | ||
+ | time.sleep(0.05) | ||
+ | for i in range(60): | ||
+ | c.move(1,-5,-5) | ||
+ | c.update() | ||
+ | time.sleep(0.05) | ||
+ | </nowiki> | ||
+ | |||
+ | ---- | ||
+ | |||
+ | == Quellen == | ||
+ | |||
+ | * https://tkdocs.com/ | ||
+ | * https://tkdocs.com/tutorial/ | ||
+ | * https://wiki.python.org/moin/TkInter | ||
+ | * https://docs.python.org/3/library/tkinter.html | ||
+ | * https://de.wikipedia.org/wiki/Tkinter | ||
+ | * https://www.python-kurs.eu/python_tkinter.php | ||
+ | * [https://www.youtube.com/watch?v=B7XYxfL7YEc Python & Tkinter - Строки (Индексы и срезы)] | ||
+ | * [https://www.youtube.com/watch?v=BBU4FboDBAA Python & Tkinter - Строки (Часть 2)] | ||
+ | * http://www.ipb.uni-tuebingen.de/kurs/comp/12_bioinformatic/python/kurs12_python11gui.html | ||
+ | * http://www.miwilhelm.de/sprachen/python/grid-layout.html -> Grid-Layout | ||
+ | * http://www.miwilhelm.de/sprachen/python/ | ||
+ | * https://www.inf-schule.de/software/gui/entwicklung_tkinter | ||
+ | |||
+ | * http://www.willemer.de/informatik/python/tkinter.htm | ||
---- | ---- | ||
[[Kategorie: Alle Seiten]] | [[Kategorie: Programmierung ]] | | [[Kategorie: Alle Seiten]] | [[Kategorie: Programmierung ]] | |
Aktuelle Version vom 18. Februar 2021, 18:43 Uhr
Inhaltsverzeichnis
Allgemeines
Tkinter ist die Python-Schnittstelle zu Tk. Tkint ist ein Akronym für "Tk interface". Tk wurde ursprünglich als eine GUI-Erweiterung für Tcl entwickelt.
- https://tkdocs.com/ (Referenzseite)
Installation
apt install python3-tk
Installation und Version testen
Version von Tcl/Tk ermitteln:
>>> import tkinter >>> tkinter.Tcl().eval('info patchlevel') '8.6.10'
Import
Unter Python2 wird Tkinter großgeschrieben, unter Python3 kleingeschrieben: tkinter.
Python2: from Tkinter import *
Python3: from tkinter import *
Widgets
button canvas checkbutton combobox entry frame label labelframe listbox menu menubutton message notebook tk_optionMenu panedwindow progressbar radiobutton scale scrollbar separator sizegrip spinbox text treeview
Fenster
tk_chooseColor - lässt ein Pop-up-Fenster erscheinen, dass es dem Benutzer ermöglicht eine Farbe aus einer Palette auszuwählen. tk_chooseDirectory - Pop-up-Fenster, dass einem Benutzer erlaubt interaktiv ein Verzeichnis auszuwählen. tk_dialog - ein Pop-up-Fenster in Form eines Dialogfenster tk_getOpenFile - Pop-up-Fenster, dass einem Benutzer erlaubt interaktiv eine Datei zum Öffnen auszuwählen. tk_getSaveFile - Pop-up-Fenster, dass einem Benutzer erlaubt interaktiv eine Datei zum Schreiben auszuwählen. tk_messageBox - Pop-up-Fenster mit Message. tk_popup - Pop-up-Fenster. toplevel - erzeugt und verändert Widgets auf höchster Ebene.
Geometrie-Manager
place grid pack
Farben
Es können die üblichen englischen Farbnamen ('red') verwendet werden. Um sicher zu sein, dass keine Fehler auftreten, ist es besser, die RGB-Bezeichnungen zu verwenden, entweder als Tupel ( (255,0,0) ) oder in hexadezimaler Schreibweise ('#ff0000')
Zur Farbauswahl kann man in das Skript den Colorchooser aufrufen:
from tkinter.colorchooser import askcolor farbe = askcolor()
farbe[0] gibt den Code in Tupel-Schreibweise aus, farbe[1] den hexadezimalen Code.
Canvas
Grundgerüst
from tkinter import * tk = Tk() c = Canvas(tk,width = 500, height = 500) c.pack() c.create_line(0,0,500,500)
Vergleich zu Turtle:
import turtle as t t.setup(width = 500, height = 500) t.up() t.goto(-250,250) t.down() t.goto(250,-250)
Die Koordinaten werden von der linken oberen Ecke aus gedacht.
Funktionen
- create_line(x1,y1,x2,y2)
- create_rectangle(x1,y1,x2,y2) # optional zum Ausfüllen: create_rectangle(x1,y1,x2,y2,fill = 'farbe'))
- create_arc(x1,y1,x2,y2,extent = Winkelgrad, style = ARC) # z. B.: c.create_arc(10,10,200,80,extent = 359, style = ARC)
- create_polygon(x1,y1,x2,y2,xn,yn,fill = farbe, outline = farbe) # z. B.: c.create_polygon(10,10,100,10,100,120,90,130,30,60, fill = "", outline = 'black')
- create_text(x,y, text, fill, font) # z. B. c.create_text(150,100,text = "Hier kommt Freund Hein!", fill = farbe[1],font = ('Arial', 20))
- create_image(x,y, anchor = Himmelsrichtung, image = meinBild) # z. B.: meinBild = PhotoImage(file = '../koeln201906.gif'); c.create_image(0,0, anchor = NW, image = meinBild) # NW = northwest = links oben
- move(ID,x,y) # bewegt Objekt Richtung x,y
- bind_all(ereignis, funktion) # Bindet ein Ereignis an eine Funktion. Beispiel: c.bind_all('<KeyPress-Return>', bewegeObjekt)
- itemconfig(objekt,fill = farbe, outline = farbe) # Statt des Variablennamens kann für das Objekt auch die ID (z. B. 1) verwendet werden.
- winfo_height() # gibt die aktuelle Höhe der Leinwand wieder. # Funktioniert nach
update()
- coords(objekt oder ID) # gibt die aktuellen x- und y- Koordinaten des Objekts zurück.
Events
- <KeyPress-Return>
- <KeyPress-Up>
- <KeyPress-Down>
- <KeyPress-Left>
- <KeyPress-Right>
keysyms sind Werte, die Tk als Namen für bestimmte Tasten erkennt:
def bewegeObjekt(aktion): if aktion.keysym == 'Up': c.move(1, 0, -3) elif aktion.keysym == 'Down': c.move(1, 0, 3) elif aktion.keysym == 'Left': c.move(1, -3, 0) else: c.move(1, 3, 0)
Beispiele
Button
from tkinter import * def hallowelt(): print("Hallo Welt") tk = Tk() btn = Button(tk,text = "Hier klicken",command = hallowelt) btn.pack()
Textbox
from tkinter import * w1=Tk() w1.geometry('100x100') w1.config(bg='#f00') w1.title('red windows') w2=Tk() w2.geometry('300x300') w2.config(bg='grey') w2.title('grey windows') t1 = Label(w1, text='text in red window', fg='yellow', bg = 'grey') t1.config(font = ('Times', 25)) t1.pack() w1.mainloop() w2.mainloop()
Animation mit move()
from tkinter import * import time tk = Tk() c = Canvas(tk, width = 400, height = 400) c.pack() c.create_polygon(10,10,10,60,50,35) for i in range(60): c.move(1,5,5) c.update() time.sleep(0.05) for i in range(60): c.move(1,-5,-5) c.update() time.sleep(0.05)
Quellen
- https://tkdocs.com/
- https://tkdocs.com/tutorial/
- https://wiki.python.org/moin/TkInter
- https://docs.python.org/3/library/tkinter.html
- https://de.wikipedia.org/wiki/Tkinter
- https://www.python-kurs.eu/python_tkinter.php
- Python & Tkinter - Строки (Индексы и срезы)
- Python & Tkinter - Строки (Часть 2)
- http://www.ipb.uni-tuebingen.de/kurs/comp/12_bioinformatic/python/kurs12_python11gui.html
- http://www.miwilhelm.de/sprachen/python/grid-layout.html -> Grid-Layout
- http://www.miwilhelm.de/sprachen/python/
- https://www.inf-schule.de/software/gui/entwicklung_tkinter
| |