Scallierung von QtWidgets
@Nobuddy: Ich verstehe ehrlich gesagt nicht was Du da eigentlich möchtest‽ Das sich Eingabefelder in der Grösse dem Inhalt anpassen wäre wie gesagt sehr ungewöhnlich. Die wählt man beim Entwurf so gross das die überwiegende Anzahl der Eingaben passt, beziehungsweise geht man einfach davon aus das nicht alles angezeigt wird wenn mehr eingegeben wird. Kennst Du eine GUI die sich nicht so verhält?
@BlackJack, habe mich vielleicht nicht richtig ausgedrückt.
Beim Starten der GUI, möchte ich die Widgets QLineEdit mit Daten aus eine Tabelle füllen. Die Textlänge kann hier sehr unterschiedlich sein.
Daher habe ich gedacht, dass eine Anpassung der GUI möglich sein müsste.
Mit tk funktioniert das bei mir.
Beim Starten der GUI, möchte ich die Widgets QLineEdit mit Daten aus eine Tabelle füllen. Die Textlänge kann hier sehr unterschiedlich sein.
Daher habe ich gedacht, dass eine Anpassung der GUI möglich sein müsste.
Mit tk funktioniert das bei mir.
Ich habe da ein Modul geschrieben (ScreenCenter), dass die Fenstergrösse ermittelt und das Fenster im Bildschirm zentriert.
Code: Alles auswählen
# Ermittlung der Fenstergröße, Zentrierung des Fensters auf dem Bildschirm
x, y, hdw, hdh = ScreenCenter(self.screenx, self.screeny,
self.xpos, self.ypos, self.button_counter).screen_center()
self.my_win.geometry('{}x{}+{}+{}'.format(x, y, hdw, hdh))
self.my_win.update()
@Nobuddy: Und was hat das jetzt damit zu tun das Eingabefelder ihre Grösse nicht ihrem Inhalt anpassen?
Ich möchte wieder zum Eigentlichen zurück kommen.
Mit "window.line_edit_0.resize(400,115)" lässt sich das zumindest manuell bewerkstelligen.
Mit window.line_edit_0.minimumSize() kann ich mir die aktuelle Einstellung der Breite und Höhe anzeigen lassen.
Nur wie bekomme ich die Werte zur Verarbeitung heraus?
Mit "window.line_edit_0.resize(400,115)" lässt sich das zumindest manuell bewerkstelligen.
Mit window.line_edit_0.minimumSize() kann ich mir die aktuelle Einstellung der Breite und Höhe anzeigen lassen.
Nur wie bekomme ich die Werte zur Verarbeitung heraus?
@Nobuddy: Das klingt falsch das Du da irgendwas machen musst. Um Grössen sollte sich das Layout kümmern.
@BlackJack, und wie bekomme ich das Layout dazu?
Auch wenn es falsch ist, ist das bis jetzt meine einzige Lösung:
Auch wenn es falsch ist, ist das bis jetzt meine einzige Lösung:
Code: Alles auswählen
if __name__ == '__main__':
dialog = 'untitled.ui'
app = QtWidgets.QApplication(sys.argv)
window = Ui(dialog)
# Setze Mindestbreite QLineEdit
min_width = 200
min_height = window.line_edit_0.minimumSize().height()
window.resize(min_width, min_height)
width2sign = round((200 / 19), 2)
# Änderung Bezeichnung label_0
window.label_0.setText("Lieferant")
# Text
text = "aaaaaaaaaaaaaaaaa sssssssssssssssssssssss ddd"
# Berechnung und Aktualisierung der Mindestbreite für Text
width = round(len(text) * width2sign)
window.resize(width, min_height)
# Füge Text in QLineEdit ein
window.line_edit_0.setText(text)
result = window.exec_()
@Nobuddy: Ich habe das Gefühl Du willst da sehr komische Sachen machen. Wenn Du am Ende sowieso alle Label und Eigenschaften der Eingabefelder wie die Breite ändern möchtest, dann ist das doch im Grunde fast genau so viel Code als wenn Du gleich den Dialog dynamisch im Programm erstellst.
@BlackJack, klar wäre schön, wenn es da eine bessere Alternative geben würde.
Ich arbeite mit TAB-getrennten Listen.
Wenn es keine Alternative gibt, würde ich den längsten Text der Liste nehmen und dann "window.resize(width, min_height)" aktualisieren.
Ist der Text breiter als screenx, müsste man noch eine x-Scrollbar in Betracht ziehen.
Ich arbeite mit TAB-getrennten Listen.
Wenn es keine Alternative gibt, würde ich den längsten Text der Liste nehmen und dann "window.resize(width, min_height)" aktualisieren.
Ist der Text breiter als screenx, müsste man noch eine x-Scrollbar in Betracht ziehen.
@Nobuddy: Das ist immer noch komisch, ich kenne kein Programm das so etwas macht. Man weiss doch in etwa was die Länge eines Wertes ist. Und wenn sogar die Gefahr besteht, dass der Bildschirm nicht breit genug ist, dann ist ein `LineEdit` ganz einfach nicht das richtige Widget, denn das ist ja auch besch…eiden zu lesen und zu bearbeiten so eine einzelne laaaange Zeile für die man auch noch horizontal scrollen muss.
Na wattn Glueck, dass es so viele Beispiele dafuer gibt, an denen man sich das anschauen kann.
ZB http://www.python-forum.org/viewtopic.php?f=11&t=16817
ZB http://www.python-forum.org/viewtopic.php?f=11&t=16817
Ja das ist es wirklich ...., schönes Beispiel.
Das mit "import *" sollte man aktualisieren.
Das mit "import *" sollte man aktualisieren.
Code: Alles auswählen
from PyQt4.QtCore import Qt, QAbstractTableModel, SIGNAL
from PyQt4.QtGui import QWidget, QTableView, QApplication, QVBoxLayout
@__deets__, hast Du evtl. noch ein Beispiel für Binding?
Die Tabelle in dem Beispiel ist ja schreibgeschützt, was ja nicht verkehrt ist.
Wenn man nun sich einen Datensatz auswählt und mit Enter bestätigt, könnte man ja den Datensatz als Dataset in einer GUI ausgeben lassen, um diesen zu editieren.
Wenn es da etwas in der Richtung schon gebe, wäre ein oder mehrere Beispiele nicht schlecht.
Die Tabelle in dem Beispiel ist ja schreibgeschützt, was ja nicht verkehrt ist.
Wenn man nun sich einen Datensatz auswählt und mit Enter bestätigt, könnte man ja den Datensatz als Dataset in einer GUI ausgeben lassen, um diesen zu editieren.
Wenn es da etwas in der Richtung schon gebe, wäre ein oder mehrere Beispiele nicht schlecht.
Habe mich mit dem Code-Beispiel http://www.python-forum.org/viewtopic.php?f=11&t=16817 auseinander gesetzt.
Manches beginne ich zu verstehen, bei manch anderem fehlt noch der Funke.
PyQt4 wurde ja durch PyQt5 ersetzt. Gibt es evtl., ein in etwa gleiches Code-Beispiel mit PyQt5?
Wie ich gesehen habe, gibt es kein Binding wie bei tk.
Dazu habe ich folgende Infos gefunden:
http://pyqt.sourceforge.net/Docs/PyQt5/
http://pyqt.sourceforge.net/Docs/PyQt5/ ... event.html
https://doc.qt.io/qt-5/qkeyevent.html
Hier habe ich erhebliche Probleme, vielleicht könnte jemand von Euch mir mit ein paar Beispielen helfen, dies beeser zu verstehen?
Manches beginne ich zu verstehen, bei manch anderem fehlt noch der Funke.
PyQt4 wurde ja durch PyQt5 ersetzt. Gibt es evtl., ein in etwa gleiches Code-Beispiel mit PyQt5?
Wie ich gesehen habe, gibt es kein Binding wie bei tk.
Dazu habe ich folgende Infos gefunden:
http://pyqt.sourceforge.net/Docs/PyQt5/
http://pyqt.sourceforge.net/Docs/PyQt5/ ... event.html
https://doc.qt.io/qt-5/qkeyevent.html
Hier habe ich erhebliche Probleme, vielleicht könnte jemand von Euch mir mit ein paar Beispielen helfen, dies beeser zu verstehen?