Vorwort, wenn die Logik meines Codes nicht sehr gut ist (was ich gerne glaube, dass es in Ordnung ist), seien Sie bitte geduldig mit mir, ich versuche nur, dieses Ding zu überwinden. Für meine Anwendung habe ich also eine Fensterklasse erstellt. Ich habe meinen Code so weit wie möglich minimiert, damit nichts nicht miteinander in Verbindung steht (CSS enthält nichts über Flex-Display-Obvs und keine Margen/Paddings, es sind nur Farben, Schriftarten und Schaltflächen, aber das Entfernen des Problems nicht löst). Der Code ist unten: < /p>
class Window(QWidget):
def __init__(self, name, width=640, height=480, horizontal_layout=False):
super().__init__()
self.setWindowTitle(name)
self.setGeometry(100, 100, width, height)
self.main_layout = QHBoxLayout() if horizontal_layout else QVBoxLayout()
self.setLayout(self.main_layout)
self.set_css("style.css")
self.widget_list = list()
def set_css(self, css):
style = open(css).read()
self.setStyleSheet(style)
def add_layout(self):
layout = QVBoxLayout()
self.main_layout.addLayout(layout)
return layout
def add_label(self, text, layout=None):
label = QLabel(text)
self.add_widget(label, layout)
return label
def add_button(self, text, callback=None, layout=None):
layout = layout if layout else self.main_layout
button = QPushButton(text)
if callback:
button.clicked.connect(callback)
self.add_widget(button, layout)
return button
def add_widget(self, widget, layout=None):
layout = layout if layout else self.main_layout
if not hasattr(layout, 'widgets_list'):
layout.widgets_list = list()
layout.widgets_list.append(widget)
layout.addWidget(widget)
app = QApplication([])
main = Window("interface", horizontal_layout=True)
col1, col2 = main.add_layout(), main.add_layout()
main.add_label("Label 1", layout=col1)
main.add_button("Button 1", layout=col1)
main.add_label("Label 2", layout=col2)
main.add_button("Button 2", layout=col2)
main.show()
sys.exit(app.exec())
< /code>
Um die Verfolgungsjagd zu schneiden, wollte ich etwas wie auf diesem Bild: < /p>
Was ich wollte, was ich in Farbe zeichnen wollte. Verwenden der AddStretch -Methode zum Zeilenlayout und zum Wickeln aller QvboxLayouts in Qwidgets, es wurde das Problem irgendwie behoben, aber alle Inhalt der Spalten sanken nach unten und es hat absolut nichts geeignet, es zu beheben. würde hier funktionieren) oder etwas anderes - es wäre großartig. Ich weiß jedoch nicht, dass ich das Gitterlayout benutze, weil ich das Problem in meinem Code wirklich speziell finden möchte. Wie auch immer, danke an alle!
Problemnisting QvboxLayouts in einem QHboxLayout ⇐ Python
-
- Similar Topics
- Replies
- Views
- Last post