Python: Tkinter: Unterschied zwischen den Versionen

Aus Flinkwiki
Wechseln zu: Navigation, Suche
(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: pygame|Zur Seite "Python: pygame"]]'''</div>
+
<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://de.wikipedia.org/wiki/Tkinter
+
* https://tkdocs.com/ (Referenzseite)
 +
 
 +
=== Installation ===
 +
 
 +
apt install python3-tk
 +
 
 +
----
 +
 
 +
=== Installation und Version testen ===
 +
 
 +
[[Datei:TkinterTest.png|mini|left]]
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
  
* 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)]
+
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.
  
 
----
 
----
== Beispiel Textbox ==
+
 
 +
=== 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

Seitenübersicht
Zur Seite "Python"
Zur Seite "Python: Klassen"
Zur Seite "Python: Module"
Zur Seite "Python: Turtle"
Zur Seite "Python: Pygame"
Zur Seite "Python: PyQT"
Zur Seite "Python: Anaconda"


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.

Installation

apt install python3-tk

Installation und Version testen

TkinterTest.png










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

[1]


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

[2]


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


| |