Ich habe schon des öfteren in Postings hier gelesen, dass tkinter für komplexe GUis kaum geeignet wäre.
Doch ich bin der Auffassung, dass sich gerade tkinter in besonderem Maße für komplexe GUIs eignet, denn man hat in tkinter Einfluss auf den Aufbau der GUI, den man dort nicht hat, wo man nur ein Interface zur GUI bekommt.
Was kann manche zu der Auffassung verleitet haben, dass komplexe GUIs in tkinter schwer zu verwirklichen wären?
Wahrscheinlich liegt es an der Weise, wie sie mit tkinter herumgespielt und implementiert haben. Da werden Klassen gemacht für GUI Container Widgets und denen werden dann Parameter übergeben, die man im Code zur GUI braucht.
Das ist schon schlimm und dann werden auch noch Referenzen auf Widgets übergeben, die ganz woanders sind und man dann in einem Code zu einem Frame auf Widgets in irgend einer Notebook Seite zugreift
So kann man natürlich keine komplexe GUI entwickeln, sondern scheitert schon sehr früh an solchen Verflechtungen.
Wenn man sich aber daran hält:
- GUI ist GUI
- und Code ist Code
- und den GUI Code greift man nicht an
Dann ist es sehr einfach, komplexe GUIs auch in tkinter zu entwickeln.
Besonders einfach wird es dann, wenn man den GUI Code gar nicht schreibt, sondern ein geeignetes Werkzeug zur GUI Generierung hat.
Da könnte man sich natürlich auch noch darüber unterhalten, was jetzt die geeignetsten Werkzeuge also GUI Builder wären.
PS: Wenn man in tkinter Vieles machen kann, was man bei anderen GUI Frameworks nicht machen kann, kann man sich auch komplexe GUIs versauen.
Workshop: komplexe GUIs in tkinter?
@Alfons Mittelmeyer: Ich würde mal sagen Du gehst von einer falschen Voraussetzung aus. Es geht nicht darum das man keine komplexen GUIs erstellen könnte, sondern das Tk altbacken aussieht und sich nicht an die heute üblichen und vom Benutzer erwarteten Vorgehensweisen hält, und nicht die Bandbreite an Widgets und Abstraktionen mitbringt, die man von modernen GUI-Rahmenwerken gewohnt ist. Man muss sich zu schnell zu viel selber basteln, was man heutzutage fertig erwartet.
-
- User
- Beiträge: 1715
- Registriert: Freitag 31. Juli 2015, 13:34
Das Menü sieht gleich aus, wie die sonstigen Menüs, die man gewohnt ist. Label können es wohl nicht sein, denn das ist nur Text, Frames sehen überall gleich aus, nämlich gar nicht.BlackJack hat geschrieben:@Alfons Mittelmeyer: Ich würde mal sagen Du gehst von einer falschen Voraussetzung aus. Es geht nicht darum das man keine komplexen GUIs erstellen könnte, sondern das Tk altbacken aussieht
Sind es dann vielleicht die Buttons, die dir nicht gefallen?
@Alfons Mittelmeyer: Wie stark sich die Optik unterscheidet mag von System zu System unterschiedlich sein. Bei mir sehen die Menüs jedenfalls anders aus als in anderen Anwendungen. Ebenso andere Bedienelemente wie Scrollbalken, Checkboxen, und so weiter. Und es sieht halt aus wie GUIs in den 90ern. Dieser Kritikpunkt kommt ja auch nicht von mir, darum ist auch egal ob mir das gefällt oder nicht. Und was sich auch nicht an die Gepflogenheiten von mittlerweile wohl allen Desktopumgebungen hält, ist die Bedienung per Tastatur. Strg+X, Strg+C, Strg+V zum Ausschneiden, Kopieren, und Einfügen von Text ist zum Beispiel recht universell, macht Tk aber anders.
-
- User
- Beiträge: 1715
- Registriert: Freitag 31. Juli 2015, 13:34
Das ist tatsächlich von System zu System unterschiedlich. Unter Linux schauen die Menüs genauso aus, wie etwa das Menü in IDLE. Als ich mir das aber unter Windows angesehen hatte, hatte ich einen Schrecken bekommen. Das in Linux einzeilige Menü war dort auf zwei Zeilen umgebrochen, obwohl genug Platz da war. Außerdem hatte ich command Buttons farblich abgehoben. Damit sie nicht direkt nebeneinanderliegen, habe ich commands ohne Funktion und ohne Labeltext als Zwischenraum verwendet. Unter Windows war plötzlich statt leer '()' zu sehen. Da sollte ich statt Leerstring ein Leerzeichen nehmen.BlackJack hat geschrieben:@Alfons Mittelmeyer: Wie stark sich die Optik unterscheidet mag von System zu System unterschiedlich sein. Bei mir sehen die Menüs jedenfalls anders aus als in anderen Anwendungen.
Und dann habe ich einen Button mit '.' als Text. Unter Linux ist der ganz quadratisch. Unter Windows ist er aber auf ein sehr schmales Rechteck geschrumpft.
Und was Strg+X, Strg+C, Strg+V betrifft, funktioniert das einwandfrei unter Linux. Könnte sein, dass auch da in Windows wieder etwas anderes geschieht.
Also ich finde, unter Linux sieht es gut aus. Allerdings verstehe ich nicht, warum das unter Windows anders ist.
-
- User
- Beiträge: 1715
- Registriert: Freitag 31. Juli 2015, 13:34
Da müßte ich mir mal ansehen, ob es unter Windows eventuell andere Defaultwerte für padx sind, denn die Anwendung war in Windows auch viel schmaler und das bei derselben tkinter Version.Alfons Mittelmeyer hat geschrieben:Das ist tatsächlich von System zu System unterschiedlich. Unter Linux schauen die Menüs genauso aus, wie etwa das Menü in IDLE. Als ich mir das aber unter Windows angesehen hatte, hatte ich einen Schrecken bekommen. Das in Linux einzeilige Menü war dort auf zwei Zeilen umgebrochen, obwohl genug Platz da war. Außerdem hatte ich command Buttons farblich abgehoben. Damit sie nicht direkt nebeneinanderliegen, habe ich commands ohne Funktion und ohne Labeltext als Zwischenraum verwendet. Unter Windows war plötzlich statt leer '()' zu sehen. Da sollte ich statt Leerstring ein Leerzeichen nehmen.BlackJack hat geschrieben:@Alfons Mittelmeyer: Wie stark sich die Optik unterscheidet mag von System zu System unterschiedlich sein. Bei mir sehen die Menüs jedenfalls anders aus als in anderen Anwendungen.
Und dann habe ich einen Button mit '.' als Text. Unter Linux ist der ganz quadratisch. Unter Windows ist er aber auf ein sehr schmales Rechteck geschrumpft.
Und was Strg+X, Strg+C, Strg+V betrifft, funktioniert das einwandfrei unter Linux. Könnte sein, dass auch da in Windows wieder etwas anderes geschieht.
Also ich finde, unter Linux sieht es gut aus. Allerdings verstehe ich nicht, warum das unter Windows anders ist.
-
- User
- Beiträge: 1715
- Registriert: Freitag 31. Juli 2015, 13:34
@BlackJack: es sieht von System zu System unterschiedlich aus, denn es gibt unterschiedliche Default Werte. Bei Buttons sind es bei padx 3m, also 3 mm, bei Windows ist es aber nur 1 Pixel.
Unverständlich, warum man das so macht.
Unverständlich, warum man das so macht.
- noisefloor
- User
- Beiträge: 3856
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
Der einzige "Bonus" von Tkinter ist, dass Python es mit an Bord hat. Wenn das nicht so wäre, behaupte ich mal, wäre Tkinter in der Python-Welt am Rande der Bedeutungslosigkeit.
Gruß, noisefloor
Sehe ich genau so. Für einfache Sache mag Tkinter ok sein, aber für große GUIs, z.B. für Desktop-Programme, sind Qt und GTK+ Tkinter meilenweit überlegen.und nicht die Bandbreite an Widgets und Abstraktionen mitbringt, die man von modernen GUI-Rahmenwerken gewohnt ist.
Der einzige "Bonus" von Tkinter ist, dass Python es mit an Bord hat. Wenn das nicht so wäre, behaupte ich mal, wäre Tkinter in der Python-Welt am Rande der Bedeutungslosigkeit.
Gruß, noisefloor
Ähm, ja die Menüs einer Tk-Anwendung sehen genau so aus wie die anderer Tk-Anwendungen.Alfons Mittelmeyer hat geschrieben:Unter Linux schauen die Menüs genauso aus, wie etwa das Menü in IDLE.
- noisefloor
- User
- Beiträge: 3856
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
@lackschuh: die Unterschiede werden auch deutlicher, wenn man mal ein paar Element wie Buttons, Eingabefelder und Checkboxen einbaut.
Grundsätzlich halte ich die Optik von Tkinter auch für altbacken. Aber damit kann man IMHO in vielen Fällen leben, wenn du die Funktion stimmt. Wobei mir so keine "großen" Anwendung einfällt, die man "in der freien Wildbahn" so antrifft, die auf Tkinter als GUI setzt. Unter Linux läuft alles, was ich so kenne, auf Qt oder GTK+, unter Windows halt auf den Win-Komponenten wie WPF.
Deutlich schwerwiegender findet ich das oben genannte, nämlich den Funktionsumfang, die Anzahl der verfügbaren Widgets etc.
Gruß, noisefloor
@lackschuh: die Unterschiede werden auch deutlicher, wenn man mal ein paar Element wie Buttons, Eingabefelder und Checkboxen einbaut.
Grundsätzlich halte ich die Optik von Tkinter auch für altbacken. Aber damit kann man IMHO in vielen Fällen leben, wenn du die Funktion stimmt. Wobei mir so keine "großen" Anwendung einfällt, die man "in der freien Wildbahn" so antrifft, die auf Tkinter als GUI setzt. Unter Linux läuft alles, was ich so kenne, auf Qt oder GTK+, unter Windows halt auf den Win-Komponenten wie WPF.
Deutlich schwerwiegender findet ich das oben genannte, nämlich den Funktionsumfang, die Anzahl der verfügbaren Widgets etc.
Gruß, noisefloor
Auch wenn Qt lange nicht perfekt ist - es ist auf einem guten Weg mit seinem MVC-Ansatz (QAbstractItemModel etc), und auch die neue QML-Technik bringt die UI in Bereiche, wie sie der Nutzer heute im Zeitalter der Mobil-UIs mit Animationen, Transparenz und "Material Design" erwartet.
-
- User
- Beiträge: 1715
- Registriert: Freitag 31. Juli 2015, 13:34
Ganz stimmt das nicht, denn bei tkintger in Windows sind die horizontalen Abstände geschrumpft.lackschuh hat geschrieben:Also ich sehe i.S. Menüs etc. kein Unterschied unter Win 8.1
Und dann ist das Aussehen von tkiner in Linux und Windows unterschiedlich.
So sieht mein GuiDesigner in Linux aus, wenn man fast alles unter dem Menü verbirgt, um Platz auf dem Desktop zu sparen:
Und so sieht es derzeit in Windows 7 aus:
Habe jetzt gesehen, woran es liegt, dass in Windows der Umbruch da ist und warum das Menü nicht mehr wie ein Menü aussieht:
Ich hatte versehentlich einen columnbreak gesetzt, was unter Linux ohne Wirkung blieb.
Dann hatte ich im Menü, bei commands Farben gesetzt, das ist aber in der Menüleiste in Windows ohne Wirkung.
Dann hatte ich leere commands ohne Text als Lerraum eingefügt. Da wurde in Windows '()' daraus.
Das grün ist auf meinem Raspberry Pi viel zu dunkel. Auf meinem MK808 B ware es ausreichend hell. Da werde ich die grünen Buttons und die grünen commands im Menü wohl in lightgreen wandeln.
Aber das ändert nichts, dass Farben in der Menüleiste unter Windows nicht funktionieren.
Das wird in Windows niemals so aussehen, wie unter Linux:
Code: Alles auswählen
try:
import tkinter as tk
except ImportError:
import Tkinter as tk
class Application(tk.Tk):
def __init__(self,**kwargs):
tk.Tk.__init__(self,**kwargs)
# widget definitions ===================================
self.menu = Menu_1(self)
self.config(menu = self.menu, width=600)
class Menu_1(tk.Menu):
def __init__(self,master,**kwargs):
tk.Menu.__init__(self,master,**kwargs)
self.config(activebackground='#ececac')
# widget definitions ===================================
self.add_cascade(label='File')
self.add_cascade(label='Special')
self.add_cascade(label='Help')
self.add_command(background='lightgreen', label='Create ON')
self.add_command(label = ' ',state='disabled')
self.add_command(background='lightgreen', label='Config ON')
self.add_command(label = ' ',state='disabled')
self.add_command(background='orange', label='Layout OFF')
self.add_command(label = ' ', state='disabled')
self.add_command(background='lightgreen', label='Mouse ON')
self.add_command(label='Hide')
if __name__ == '__main__':
Application().mainloop()
Aber dann geht es leider nicht mehr unter Linux. Da bräuchte man also eine Unterscheidung, welches System es nun ist.
-
- User
- Beiträge: 1715
- Registriert: Freitag 31. Juli 2015, 13:34
Farben in der Menüleiste? Wie machst Du das für Windows?wuf hat geschrieben:Apropos Menüs.
Es muss nicht immer der Jahrzehnte alte Stil sein
Hi Alfons
Auf Windows Rechnern wird vom OS vorgegeben, welche Farbe eine Menüleiste haben muss. Trifft aber nicht für die Farbe der Untermenü zu. Da meine Programme eigentlich nicht für Windows bestimmt sind spielt es keine Rolle. Sonst kann man diese mittels VirtualBox und installiertem Linux laufen lassen.
Gruss wuf
Auf Windows Rechnern wird vom OS vorgegeben, welche Farbe eine Menüleiste haben muss. Trifft aber nicht für die Farbe der Untermenü zu. Da meine Programme eigentlich nicht für Windows bestimmt sind spielt es keine Rolle. Sonst kann man diese mittels VirtualBox und installiertem Linux laufen lassen.
Gruss wuf
Take it easy Mates!
-
- User
- Beiträge: 1715
- Registriert: Freitag 31. Juli 2015, 13:34
@wuf: ja bei Untermenüs. Aber man sollte dann eines nicht vergessen, wenn man etwa den background setzt, auch den foreground zu setzen, ob nun normal, active oder disabled.
Bei weißem background sieht etwa ein helles Blau nicht schlecht als activebackground aus. Nur wenn dann Windows als Default für activeforeground weiß hat, dann wirkt das gar nicht mehr gut. Also, wenn man foreground oder background setzt, dann jeweils auch das Andere mitsetzen.
Bei weißem background sieht etwa ein helles Blau nicht schlecht als activebackground aus. Nur wenn dann Windows als Default für activeforeground weiß hat, dann wirkt das gar nicht mehr gut. Also, wenn man foreground oder background setzt, dann jeweils auch das Andere mitsetzen.