2014-01-26 52 views
1

我有一個GUI應用程序的MainWindow調整大小的問題。MainWindow Widget Resize(Pyside)

這是我所看到的,當我嘗試運行應用程序: Link Image 1

和發生什麼,當我嘗試用鼠標來調整其大小: Link Image 2

我想,當我嘗試調整MainWindow的大小,就像我之前展示的第一張圖像一樣,它顯示的是內部的Widget,而不是每個「標籤」之間有很大的間距。

如果它可以幫助這是代碼: Link Code

你可以去straigth到功能setUi(),setGridUI(),忽略其餘代碼。試圖削減一些吧,讓它簡單..

謝謝。

回答

2

如果你想有一個調整大小以不修改QGridLayout的中心,你需要把不同的拉伸一些周邊行。

我在內容的上下方添加了一行,並在內容的左側和右側添加了一列,並添加了一段時間。

http://doc.qt.io/qt-4.8/qgridlayout.html#setRowStretch

http://doc.qt.io/qt-4.8/qgridlayout.html#setColumnStretch

enter image description here

def setupGridUI(self): 
    widget = QWidget() 
    layout = QGridLayout() 
    width, height = 10, 10 

    root_x, root_y = random.randrange(width), random.randrange(height) 

    for x in range(width): 
     for y in range(height): 
      random_wall = random.randrange(3) 
      if x == root_x and y == root_y: 
       label = ClickableLabel(x, y, False, True) 
      else: 
       if random_wall == 0: 
        label = ClickableLabel(x, y, True) 
       else: 
        label = ClickableLabel(x, y) 

      layout.addWidget(label, x+1, y+1) # modified 

    # added the following 4 lines 
    layout.setRowStretch(0, 1); 
    layout.setRowStretch(height+2, 1); 
    layout.setColumnStretch(0, 1); 
    layout.setColumnStretch(width+2, 1); 

    widget.setLayout(layout) 
    self.setCentralWidget(widget) 

    self.setStyleSheet("QMainWindow {background: 'purple'}") 

希望有所幫助。

+0

謝謝你,我正在嘗試addStretch(),但它不是QGridLayout()的一個屬性:/很多東西要學習:) –