Nachrichtendialoge
Nachrichtendialoge erzeugen
ret = mb.dialogtyp(title, message, option)
Es können folgende Dialogtypen verwendet werden und sie haben jeweils die folgenden Rückgabewerte:
Dialogtyp | Rückgabewert bei entsprechend gedrücktem Knopf |
---|---|
askokcancel | "OK": True , "Abbrechen": False |
askquestion | "Ja": 'yes' "Nein": 'no' |
askretrycancel | "Widerholen": True , "Abbrechen": False |
askyesno | "Ja": True , "Nein": False |
askyesnocancel | "Ja" : True , "Nein": False , "Abbrechen": None |
showerror | "Ok": 'ok' |
showinfo | "Ok": 'ok' |
showwarning | "Ok": 'ok' |
Nachrichtendialoge kennen die Optionen:
Option | Mögliche Werte | Bemerkung |
---|---|---|
default | mb.CANCEL, mb.IGNORE, mb.NO, mb,OK, mb.RETRY oder mb.YES | Aktivierter Knopf bei Dialogen |
icon | mb.ERROR, mb.INFO, mb.QUESTION oder mb.WARNING | Dieses Bild wird angezeigt |
Das folgende Programm erzeugt der Reihe nach alle Dialoge aus der obige Auswahl und schreibt die jeweiligen Rückgabewerte auf die Konsole:
import tkinter as tk
from tkinter import ttk
from tkinter import messagebox as mb
class A(tk.Tk):
def __init__(self):
super().__init__()
self.geometry('400x400')
self._createWidgets()
self._runMessages()
def _createWidgets(self):
pass
def _runMessages(self):
ret = mb.askokcancel('askokcancel', 'Wollen Sie abbrechen?', default=mb.CANCEL)
print('askokcancel, Return Value:', ret)
ret = mb.askquestion('askquestion', 'Darf ich Ihnen eine Frage stellen?')
print('askquestion, Return Value:', ret)
ret = mb.askretrycancel('askretrycancel', 'Nochmal versuchen?')
print('askretrycancel, Return Value:', ret)
ret = mb.askyesno('askyesno', 'Ja oder Nein?')
print('askyesno, Return Value:', ret)
ret = mb.askyesnocancel('askyesnocancel', 'Ja-Nö-Vielleicht')
print('askyesnocancel, Return Value:', ret)
ret = mb.showerror('showerror', 'Oh, ein Fehler!')
print('showerror, Return Value:', ret)
ret = mb.showinfo('showinfo', 'Dieses ist nur eine Information!')
print('showinfo, Return Value:', ret)
ret = mb.showwarning('showwarning', 'Dieses ist eine Warnung!')
print('showwarning, Return Value:', ret)
if __name__ == '__main__':
window = A()
window.mainloop()
Dateidialoge
Dateidialoge erzeugen
ret = fd.dialogtyp(optionen)
Es werden u.a. die folgenden Dateidialoge unterstützt:
Dateidialogtyp | Beschreibung |
---|---|
fd.askdirectory(optionen) | Es wird nach einem existierenden Verzeichnis gefragt, der Verzeichnispfad wird zurückgeliefert |
fd.askopenfilename(optionen) | Es wird nach einer Datei gefragt, der Dateiname wird zurückgeliefert |
fd.askopenfilenames(optionen) | Es wird nach (mehreren) Dateien gefragt.
Gibt eine Liste von Dateinamen zurück. Gleicher Effekt, wie mit
fd.askopenfilename(…) und gesetzter Option multiple |
fd.asksaveasfilename(optionen) | Standarddialog zum Speichern einer Datei. Es wird beim Versuch, eine Datei zu überschreiben, nachgefragt. |
Dateidialoge kennen die folgenden Optionen:
Option | Bemerkung |
---|---|
defaultextension | (nur fd.asksaveasfilename(…) )
Dateinamenserweiterung wie .txt , die an Dateien ohne Erweiterung angehängt
wird. Kein Effekt bei Dateien, die selber einen Punkt "." beinhalten |
filetypes | Liste von Dateitypen der Form: [(TYPNAME, MUSTER), …] ,
auch mit Wildcard. Schränkt Suchergebnisse ein. |
initialdir | Anfangsverzeichnis |
initialfile | Anfangsdateiname |
multiple | 'true' : mehrere Items können gleichzeitig ausgewählt werden,
(nur fd.askopenfilename(…) |
parent | Parent-Fenster, über dem der Dialog dargestellt wird |
title | Titel |
Das folgende Programm erzeugt der Reihe nach die Dialoge aus der obige Auswahl und schreibt die jeweiligen Rückgabewerte auf die Konsole:
import tkinter as tk
from tkinter import ttk
from tkinter import filedialog as fd
class A(tk.Tk):
def __init__(self):
super().__init__()
self.geometry('400x400')
self._createWidgets()
self._runFiledialoges()
def _createWidgets(self):
pass
def _runFiledialoges(self):
dirname = fd.askdirectory(title='Such dir ein Verzeichnis aus')
print('askdirectory:', dirname)
filename = fd.askopenfilename(title='Öffne Bilddatei',
filetypes=[('PNG', '*.png'),('JPG', '*.jpg')],
multiple='true' )
print('askopenfilename:', filename)
filenames = fd.askopenfilenames(title='Viele Dateien zum Öffnen')
print('askopenfilenames:', filenames)
filename = fd.asksaveasfilename(title='Speichere eine Datei' )
print('asksaveasfilename:', filename)
if __name__ == '__main__':
window = A()
window.mainloop()
Eingabedialoge
Eingabedialoge erzeugen
ret = sd.dialogtyp(ttiel, prompt, optionen)
Es werden u.a. die folgenden Eingabedialoge unterstützt:
Eingabedialogetyp | Beschreibung |
---|---|
sd.askfloat (optionen) | Fragt nach einer Fließkommazahl |
sd.askinteger (optionen) | Fragt nach einer ganzen Zahl |
sd.askstring (optionen) | Fragt nach einem String |
Eingabedialoge kennen die folgenden Optionen:
Option | Bemerkung |
---|---|
initialvalue | Angabe eines Wertes, der voreingestellt angezeigt wird |
minvalue | Kleinster erlaubter Wert (für Zahlendialoge) |
maxvalue | Größter erlaubter Wert (für Zahlendialoge) |
parent | Fenster, über dem der Dialog dargestellt werden soll. Diese Angabe sollte man machen, da sonst der Dialog oft hinter anderen Fenstern liegt. |
Das folgende Programm erzeugt der Reihe nach die Dialoge aus der obige Auswahl und schreibt die jeweiligen Rückgabewerte auf die Konsole:
import tkinter as tk
from tkinter import ttk
from tkinter import simpledialog as sd
class A(tk.Tk):
def __init__(self):
super().__init__()
self.geometry('400x400')
self._createWidgets()
self._runSimpleDialoges()
def _createWidgets(self):
pass
def _runSimpleDialoges(self):
a = sd.askfloat('Titel', 'Bitte eine Fließkommazahl eingeben:',
parent=self)
b = sd.askinteger('Titel', 'Bitte eine ganze Zahl eingeben:',
parent=self)
c = sd.askstring('Titel', 'Bitte etwas Text eingeben:',
parent=self)
print(a, b, c)
a = sd.askinteger('Titel',
'Test von Optionen', initialvalue=42,
minvalue=10, maxvalue=50, parent=self)
print(a)
if __name__ == '__main__':
window = A()
window.mainloop()
Farbdialog
Farbdialog erzeugen
ret = c.askcolor(color=None, optionen)
Der Farbdialog kennt die folgenden Optionen:
Option | Bemerkung |
---|---|
initialcolor | Zeigt diese Farbe im Dialog an. Der Funktionsparameter
color hat Vorrang vor dieser Option |
title | Angabe eines Wertes, der voreingestellt angezeigt wird |
parent | Fenster, über dem der Dialog dargestellt werden soll. Diese Angabe sollte man machen, da sonst der Dialog oft hinter anderen Fenstern liegt. |
Rückgabewert: Wird der Dialog über Cancel beendet ist der Rückgabewert
(None, None)
, sonst ein Farbcode wie ((0, 128, 0), '#008000')
.
Das folgende Programm erzeugt einen Farbdialog und schreibt den Rückgabewerte auf die Konsole:
import tkinter as tk
from tkinter import ttk
from tkinter import colorchooser as c
class A(tk.Tk):
def __init__(self):
super().__init__()
self.geometry('400x400')
self._createWidgets()
self._runAskColor()
def _createWidgets(self):
pass
def _runAskColor(self):
ret = c.askcolor(color='red', parent=self)
print(ret)
if __name__ == '__main__':
window = A()
window.mainloop()