Ahoi
ich möchte ein kleines Programm basteln, um von Messgeräten über HPIB
Daten abzufragen und zu speichern.
Ein erstes sehr einfaches GUI konnte ich in Python so bauen....
und das funktioniert schon, ABER es ist sehr mühsam, das GUI so zu
zeichnen. Ausserdem kann ich auch keine Comboboxen benutzen, welche ich
aber dringend brauche; gemäss der Dokumentation sollte die Klasse
Combobox existieren, aber wenn ich sie benutzen will geht das nicht.
Deshalb habe ich jetzt 2 Fragen:
a) wie mache ich ein GUI in Python auf etwas bequemere Art,
b) gibt es einen graphischen Editor?
alles andere ausser Python fällt flach, da ich will, dass das Programm
ohne grosses federlesen auch auf Linux läuft.
Ich verstehe nicht ganz, was du mit mühsam meinst? Du kannst auch .pack
statt .grid benutzen, dann ist die Anordnung aber nicht besonders
sinnvoll. Irgendwie musst du die Plätze ja definieren.
--> Tkinter Drag & Drop Builder:
http://page.sourceforge.net/
Ich bevorzuge übrigens PyQt - ist schöner, aber nicht einfacher. Dafür
gibts wohl auch einen Designer, hab ich aber auch nicht getestet.
Jemand schrieb:> PyQt in Verbindung mit Qt Creator
Ja das geht. Dauert nur 10x länger und das GUI sieht dann auch noch
ärmlicher aus als mit Visual Basic .NET :-)
Tobias P. schrieb:> alles andere ausser Python fällt flach, da ich will, dass> das Programm ohne grosses federlesen auch auf Linux läuft.
???
Ich habe vor vielen Jahren eine kleines Tcl-Programm auf
einer Linux-Kiste entwickelt, welches dann beim Kunden auf
einer Windows-Maschine lief.
Soeren K. schrieb:> Ich verstehe nicht ganz, was du mit mühsam meinst?
Naja, ein komplettes GUI mit Tk bauen ist schon
ziemlich mühsam, wenn es anständig aussehen soll.
Die große Stärke ist die niedrige Einstiegsschwelle.
> Du kannst auch .pack statt .grid benutzen, dann ist die> Anordnung aber nicht besonders sinnvoll. Irgendwie musst> du die Plätze ja definieren.
???
Die werden bei .pack durch die Reihenfolge zusammen mit
Option wie -side, -anchor -fill oder -expand definiert.
Der Packer hat seine Grenzen, aber siehe oben: Die Stärke
ist die niedrige Einstiegsschwelle.
Mit dem Qtcreator hat man sich ruckzuck eine einfache Gui gebastelt die
auch noch relativ nativ ausschaut, inklusive Test wie der Entwurf später
mal aussehen wird.
Wenn man fertig ist kann man das ui-File in eine Python Klasse
exportieren und ist fertig. Im eigentlichen Skript muss man nur noch
eine eigene Instanz davon anlegen und die verwendeten Signalslots
implementieren. Wenn man mehr als 3 Widgets braucht ist man damit rasend
schnell, bei einfachen Guis geht manuell schreiben schneller sofern man
die QT Widget Doku bei der Hand hat.
Ein weiterer Vorteil wäre das man die erstellte Gui notfalls auch mit
C++ mit Programmlogik füllen kann falls es mal nötig sein sollte. Wenn
man sauber programmiert compiliert das dann meistens out-of-the-box
unter Windows und Linux. PyQt wäre daher meine erste Wahl.
Lothar schrieb:> Jemand schrieb:>> PyQt in Verbindung mit Qt Creator>> Ja das geht. Dauert nur 10x länger und das GUI sieht dann auch noch> ärmlicher aus als mit Visual Basic .NET :-)
??
Das Interface sieht dann genau so aus wie es in C++/Qt5 aussehen würde,
also für den Normalverbraucher nicht unterscheidbar von was auch immer
auf der Plattform "native" ist. Warum das jetzt irgendwie lang dauern
soll weiß ich auch nicht, du baust dir halt im QtDesigner dein Layout
und fertig. Der UIC macht dann aus dem gleichen Formular entweder
Python- oder C++-Code.
Hi,
ttk funktioniert bei mir irgendwie nicht. Er meckert, dass er das nicht
findet, lustigerweise funktioniert Tkinter aber.
Ich frag mich dann halt auch, was ich alles für Libraries und Zeugs
mitliefern muss, wenn mein Programm auf einem anderen Rechner laufen
soll. Mittlerweile habe ich dermassen viel Zeug ausprobiert, dass ich
gar nicht mehr genau weiss, welche Python Pakete ich jetzt alle
installiert hab :-)
Wie geht das mit dem Qtcreator, exportieren des ui Files in eine Python
Klasse?
Grüsse
Tobias
Ich habe für Tkinter ziemlich intensiv diesen GUI-Builder verwendet:
https://github.com/alejandroautalan/pygubu
Braucht recht wenig Einarbeitung, einfach zu bedienen, Ergebnisse sind
solide. Aber eine voll animierte Schickimicki-GUI aus gebürstetem
Aluminium bekommst Du damit nicht hin. Aber Du hast ja von einer
einfachen GUI gesprochen, und dafür passt es optimal.
Possetitjel schrieb:> Soeren K. schrieb:>>> Ich verstehe nicht ganz, was du mit mühsam meinst?>> Naja, ein komplettes GUI mit Tk bauen ist schon> ziemlich mühsam, wenn es anständig aussehen soll.>> Die große Stärke ist die niedrige Einstiegsschwelle.>>> Du kannst auch .pack statt .grid benutzen, dann ist die>> Anordnung aber nicht besonders sinnvoll. Irgendwie musst>> du die Plätze ja definieren.>> ???>> Die werden bei .pack durch die Reihenfolge zusammen mit> Option wie -side, -anchor -fill oder -expand definiert.>> Der Packer hat seine Grenzen, aber siehe oben: Die Stärke> ist die niedrige Einstiegsschwelle.
Man kann auch Widgets mit einem Frame zusammenfassen und diesen dann
packen lassen.
Ich war bis jetzt mit dem Ergebnis von pack zufrieden.
Ich benutze tk allerdings mit Tcl zusammen.
Tobias P. schrieb:> ich möchte ein kleines Programm basteln, um von Messgeräten über HPIB> Daten abzufragen und zu speichern.>> Ein erstes sehr einfaches GUI konnte ich in Python so bauen....>>
1
> from tkinter import *
2
>
3
> class gui(object):
4
> def __init__(self):
5
> master = Tk()
6
> self.m_Master = master
7
> self.m_Master.wm_title('S parameter')
8
> self.m_Master.resizable(False,False)
9
> [...]
10
>
Zunächst würde ich Tix verwenden, das nicht nur ein wenig hübscher
aussieht als Tkinter und im Gegensatz dazu auch ein ComboBox-Widget hat
-- und zudem ganz grundsätzlich Vererbung für die Widgets nutzen, damit
lassen sich auch neue kombinierte Widgets erzeugen. Zudem wäre es
sicherlich sinnvoll, Deine Labels etc. nach der Erzeugung auch wieder
ansprechen zu können -- sie also in Variablen zu speichern, auch wenn
man darauf bei Readonly-Widgets sicher verzichten könnte.
Ja, das alles von Hand zu zeichnen -- beziehungsweise: zu programmieren
-- ist sicherlich relativ aufwändig, hat jedoch den Vorteil, daß es auf
jeder Python-Standardinstallation läuft. Wenn das nicht so wichtig ist,
kann man natürlich auch Qt, GTK, oder wxWidgets mit ihren WYSIWIG-Tools
benutzen. Für Python mit Tkinter oder Tix kenne ich dazu nur PAGE und
Rapyd-Tk, aber die habe ich selbst (noch?) nicht ausprobiert. YMMV.
Edit: Ach so, ganz vergessen: ich selbst schreibe für so etwas kaum noch
klassische GUI-Applikationen, sondern meistens eine kleine Webseite,
etwa mit Python und dem Webframework Flask. Dadurch kann so ein Programm
sehr einfach auf einem anderen Rechner installiert, gepflegt, gewartet
und über das Netzwerk bedient werden, gerne auch von mehreren Benutzern
zur gleichen Zeit. Mit entsprechenden ECMAScript-Bibliotheken wie zB.
Flot, jqPlot oder jqWidgets kann man sehr hübsche, interaktive Graphen
erzeugen oder andere Widgets nutzen. Daß der Rendering-Aufwand auf den
Client verlagert wird, kann unter Umständen auch sehr zuträglich für die
Performance sein.
Mit QtDesigner und wxFormBuilder konnte ich mich nicht anfreunden...
Versuch mal wxGlade, das ist für solche Anwendungsfälle gut geeignet:
https://sourceforge.net/projects/wxglade/files/wxglade/0.8.0/
Lass dich nicht davon abschrecken, daß es eine Alpha-Version ist.
Die Dokumentation ist mit im Zip-Archiv und kann übers Menü aufgerufen
werden.
wxPython kannst du über PyPi installieren. Wenn du die Wahl hast, nimm
lieber Python 3.
Gruß,
Dietmar
Hallo
wer sagt eigentlich, dass TKinter keine Combobox kennt ?
Ich verwende sie seit einigen Jahren (siehe "ttk_combo.py").
Mit Tkinter und dem grid.manager kann man durchaus ansprechende GUI's
entwickeln.
Es mag komfortablere GUI's geben, aber der Vorteil ist, dass in Python
alles bereis vorhanden ist, was sonst mit vielen Gigabytes noch
runtergeladen werden muss.
Das Kompilieren mit cx_Freeze hatte bei einem Test funktioniert,
allerdings war die Grafik unter Windows10 und Linux deprimierend
schlecht bis unbrauchbar.
Unter XP und Windows7 hatte ich keine Probleme.
Für meine eigenen Zwecke habe ich ein einfaches Buchhaltungsprogramm für
Einnahme-Überschuss-Rechnungen sowie ein Honorarberechnungsprogramm zur
Interpolation von Haonoraren auf der Grundlage HOAI-Honorartabellen
geschrieben und seit einigen Jahren erfolgreich im Einsatz.
Wichtigstes Nachschlagewerk war für mich:
"Tkinter 8.5 reference: a GUI for Python" von John W.Shipman.
Hier gibts auch die Hinweise zur ttk_Combobox.
mfg
Michael S.