Tkinter Gut?

Fragen zu Tkinter.
Antworten
LegendEnto
User
Beiträge: 8
Registriert: Samstag 3. Juni 2017, 11:03

Sollte ich um GUIS zu machen Tkinter benutzen oder sind doch drag and drop builder besser?
Da auf mein mac irgendwie kein Drag and Drop builder geht frage ich mich ob Tkinter sich überhaupt lohnt oder ob es vielleicht sogar mehr drauf hat?
BlackJack

@LegendEnto: Tkinter und graphische Builder sind kein Vergleich. Das eine ist ein GUI-Rahmenwerk, das andere sind Programme mit denen man GUIs für ein GUI-Rahmenwerk mit einer grafischen Oberfläche erstellen kann. So etwas gibt es auch für Tkinter. Wobei mir da noch kein gutes Programm über den Weg gelaufen ist. Andere GUI-Rahmenwerke sind Gtk, Kivy, Qt, und wxWidgets. Für Gtk und Qt gibt es jeweils einen Standard-GUI-Builder. Ob es für Kivy einen gibt, weiss ich nicht, und für wxWidgets gibt es zumindest keinen der all die Erweiterungen von der Python-Anbindung wxPython kennt.

Tk ist ziemlich sicher nicht besser als die anderen Alternativen, aber wenn dessen Möglichkeiten ausreichen, hat es den Vorteil zur Standardbibliothek von Python zu gehören. Es kommt also letztendlich darauf an was Du machen möchtest.

Edit: Eine weitere Möglichkeit ist in einigen Fällen auch eine Webanwendung zu schreiben, die man ja auch lokal laufen lassen kann.
Benutzeravatar
pixewakb
User
Beiträge: 1407
Registriert: Sonntag 24. April 2011, 19:43

Zu Kivy gibt es den kivy-designer, scheint aber noch nicht in einer Beta-Version verfügbar zu sein.

https://github.com/kivy/kivy-designer

Meine persönliche Meinung: Wenn es komplexere GUIs werden sollen, dann macht Qt oder Gtk eher Sinn, meine Meinung. Ich habe mal ein GUI mit Hauptfenster, Menüleiste, Symbolleisten und Toolbars erstellt, was viel Arbeit war und seinerzeit - könnte auch an meinen Programmierkenntnissen gelegen haben - sehr unübersichtlich geworden ist. Ich habe dann festgestellt, dass es mit pyQt schneller und einfacher gegangen wäre.
Alfons Mittelmeyer
User
Beiträge: 1715
Registriert: Freitag 31. Juli 2015, 13:34

pixewakb hat geschrieben:Zu Kivy gibt es den kivy-designer, scheint aber noch nicht in einer Beta-Version verfügbar zu sein.

https://github.com/kivy/kivy-designer

Meine persönliche Meinung: Wenn es komplexere GUIs werden sollen, dann macht Qt oder Gtk eher Sinn, meine Meinung. Ich habe mal ein GUI mit Hauptfenster, Menüleiste, Symbolleisten und Toolbars erstellt, was viel Arbeit war und seinerzeit - könnte auch an meinen Programmierkenntnissen gelegen haben - sehr unübersichtlich geworden ist. Ich habe dann festgestellt, dass es mit pyQt schneller und einfacher gegangen wäre.
Es ist ein Fehler, händisch eine tkinter Gui zu programmieren. Ohne geeignete Werkzeuge und ohne dass man sieht, was sich alles ändern und einstellen läßt, ist es eine Hundsarbeit.

Wenn man aber ein gutes Werkzeug zur Gui Erstellung hat, ist es auch in tkinter sehr leicht auch sehr komplexe Guis zu erstellen. Ich habe eine sehr komplexe Gui erstellt, allerdings auf sehr unorthodoxe Weise mit einer eigenen tkinter Version, die ohne Variablen für die Gui auskommt. Das habe ich für meinen GuiDesigner gebraucht, wo bei der Gui alles dynamisch sein muss und statt mit Variablen mit parent child Listen und Namen gearbeitet wird - ich habe allerdings parent child directories genommen, da ich auch die Vergabe gleicher Namen in einem parent child directory zulasse.

Das Resultat ist ein Werkzeug zur Gui Erstellung, mit dem man jetzt auch orthodoxen tkinter Code exportieren kann und bei dem es jetzt sehr einfach geworden ist - seit gerade jetzt, nach einer Option zum Code Aufruf und der neuesten Option 'baseclass' - auch sehr komplexe Guis bequem zu erstellen.

Ich würde gerne einen Workshop zur Implementierung komlexer Guis in tkinter vorschlagen.

Du kannst Dir meinen GuiDesigner ja gerne einmal ansehen.

Gibt es auf GitHub unter: https://github.com/AlfonsMittelmeyer/py ... -messaging

Einfach per grünem Button zip File downloaden
Benutzeravatar
pixewakb
User
Beiträge: 1407
Registriert: Sonntag 24. April 2011, 19:43

Es gibt heute unter

https://www.packtpub.com/packt/offers/free-learning

ein eBook konkret zu tkinter, möglicherweise von Interesse: Python GUI Programming Cookbook

@LegendEnto: Du könntest folgenden Thread abonnieren: viewtopic.php?f=21&p=310300#p310300

Von Packt gibt es jeden Tag ein kostenloses eBook, häufig sind auch Python eBooks darunter.
lackschuh
User
Beiträge: 281
Registriert: Dienstag 8. Mai 2012, 13:40

@pixewakb
Wie du vielleicht noch weisst, wurde das Buch vor einem Monat bereits angeboten und damals wurde bereits erwähnt, dass das Buch Schrott ist.
Benutzeravatar
pixewakb
User
Beiträge: 1407
Registriert: Sonntag 24. April 2011, 19:43

Sorry, das habe ich nicht mehr in Erinnerung (und darauf habe ich auch nicht geachtet). :(
Alfons Mittelmeyer
User
Beiträge: 1715
Registriert: Freitag 31. Juli 2015, 13:34

LegendEnto hat geschrieben:Sollte ich um GUIS zu machen Tkinter benutzen oder sind doch drag and drop builder besser?
Da auf mein mac irgendwie kein Drag and Drop builder geht frage ich mich ob Tkinter sich überhaupt lohnt oder ob es vielleicht sogar mehr drauf hat?
Also tkinter ist im Vergleich zu anderen GUIs, wohl die schnellste GUI.

Nachteilig ist, dass gewiise Grafik Optionen nicht auf jedem System funktionieren, nämlich etwas durchsichtig zu machen, also den alpha Kanal und dann kann es auch keine SVG Grafiken. Da scheitert es daran, dass m,an zwar etwas hinzufügen, aber nichts auschneiden und damit nichts durchsichtig machen kann.

Ader ich glaube, Vektorgrafik wird wohl vorerst keine große Rolle spielen.

Fast alle GuiBuilder sind in etwas anderem, wie etwa Java geschrieben und kennen das Verhalten von tkinter nicht genau. Ich habe erst kürzlich gesehen, dass jemand mit PAGE gearbeitet hatte und dann für jeden Menüeintrag sechs Zeilen unnützen Code bekam für die Farbe, Hintgergrundfarbe, Textfont, active foreground, activebackground und diabled foreground. Außerdem war es dabei völliger Unsinn den activebackground auf die Hintergrundfarbe zu setzen, sodass man die Menüauswahl fast gar nicht sehen konnte. Ansonsten waren das alles Defaultwerte, die man eh nicht generieren muß, weil sie eh schon so sind.

Ganz wichtige Layouts sind das Grid Layout und das Pack Layout, aber das genaue Verhalten davon ist den üblichen Gui Bildern unbekannt, weswegen sie sich mit dem Pane Layout begnügen, das sich den äußeren Abmessungen keinesfalls anpasst, und was auf dem einen System noch passt, passt dann auf einem andern System gar nicht mehr.

Mein GuiDesigner dagegen ist in tkinter geschirieben und zeigt nicht nur ein Layout davon, was später einmal werden soll, sonder zeigt tkinter live. Er hat noch nicht alle ttk Widgets aber dürfte jetzt soweit sein, dass man selbst umfangreichste GUIs in reinem tkinter exporieren kann, ohne jeglichen Zusatz von irgendwelchen Frame Work Bibliothen.

PS: Ich denke ich starte morgen einen Workshop für komplexe Guis in Tkinter
Benutzeravatar
pixewakb
User
Beiträge: 1407
Registriert: Sonntag 24. April 2011, 19:43

Packt mal in die github-Readme-Seite zu deinem Projekt einige Screenshots, damit man sich einen Eindruck davon verschaffen kann, was die Software liefert und kann. :) Ich nutze tkinter nicht wirklich, aber ich arbeite auch gar nicht mehr mit GUIs (nur noch statische html5-Seiten).
Melewo
User
Beiträge: 320
Registriert: Mittwoch 3. Mai 2017, 16:30

Alfons Mittelmeyer hat geschrieben:Nachteilig ist, dass gewiise Grafik Optionen nicht auf jedem System funktionieren, nämlich etwas durchsichtig zu machen, also den alpha Kanal und
Unter welchen Systemen? Unter Windows sind die transparenten Bereiche von Images zumindest mit Tkinter und PIL erhalten geblieben.
Alfons Mittelmeyer
User
Beiträge: 1715
Registriert: Freitag 31. Juli 2015, 13:34

Melewo hat geschrieben:Unter welchen Systemen? Unter Windows sind die transparenten Bereiche von Images zumindest mit Tkinter und PIL erhalten geblieben.
Und was nutzt das? Dann hast Du ein Image mit transparenten Bereichen, Und das packst Du dann etwa in einen Label. Pech, dass Du dann den Label nicht durchsichtig machen kannst.

Beim Mac geht es mit mylabel['bg'] = 'systemTransparent'

Aber sonst geht es nicht, es sei denn in einem Canvas, wobei der Canvas selber auch wieder nicht durchsichtig zu machen ist.

tkinter benutzt rgb ohne alpha Kanal und daher geht Transparenz oder Halbtransparenz nicht.

Beim Canvas müßte man mal probieren, wenn man dort Widgets als Window reinlegt, ob man dann ein png mit transparenten Bereichen darüber legen kann.
Melewo
User
Beiträge: 320
Registriert: Mittwoch 3. Mai 2017, 16:30

Bevor wir uns missverstehen, ich meinte, man kann sich ein Image mit transparenten Bereichen in ein Label holen und der Hintergrund vom Label scheint halt in den transparenten Bereichen durch, so wie man sich das halt vorstellt für transparente Bereiche in Images.

Code: Alles auswählen

from tkinter import Tk, Label
from PIL import Image, ImageTk

fenster = Tk()
fenster["bg"] = "#904b00"
fensterbild = Label(fenster, bg = "#f00", bd = 0)
fensterbild.pack()

image_mit_transparenz = Image.open("images/kugel-01.png").convert("RGBA")
label_image = ImageTk.PhotoImage(image_mit_transparenz)
fensterbild.config(image = label_image)

fenster.mainloop()
Alfons Mittelmeyer
User
Beiträge: 1715
Registriert: Freitag 31. Juli 2015, 13:34

@Melewo: das ist kein Problem. Nur den Label kann man eben nicht durchsichtig machen, außer beim Mac.

Also ich habe das mal mit dem Canvas ausprobiert. Auch wenn man dort Widgets in einem window hat, oben sind sie trotzdem, auch wenn man das window lowert.

Also widgets kann man nicht durchsichtig machen, das Mainwindow aber schon.
Alfons Mittelmeyer
User
Beiträge: 1715
Registriert: Freitag 31. Juli 2015, 13:34

@Melewo: ich habe gerade den' Workshop: komplexe GUIs in tkinter?' gestartet

Siehe: viewtopic.php?f=18&t=40654

Bin mal gespannt auf das Feedback
Melewo
User
Beiträge: 320
Registriert: Mittwoch 3. Mai 2017, 16:30

Ich denke schon, dass genügend Interessenten vorhanden sind. Die Zahlen sprechen ja eigentlich für sich, wenn mehr Fragen zu Tkinter gestellt wurden, als zu den restlichen GUIs.

Themen: 2412, Beiträge: 17781

Somit gesehen dürfte ja eine gewisse Nachfrage vorhanden sein. Und wenn ich von mir ausgehe, bisher machte Tkinter noch alles, was ich erwartete.
Antworten