Problemnisting QvboxLayouts in einem QHboxLayoutPython

Python-Programme
Anonymous
 Problemnisting QvboxLayouts in einem QHboxLayout

Post by Anonymous »

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!

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post