2014-01-26 3 views
1

У меня проблема с изменением размера MainWindow приложения GUI.MainWindow Widget Resize (Pyside)

Это то, что я вижу, когда я пытаюсь запустить приложение: Link Image 1

и что происходит, когда я пытаюсь изменить его с помощью мыши: Link Image 2

Я хотел бы, что, когда я пытаюсь чтобы изменить размер MainWindow, он отображает виджет внутри, как первое изображение, которое я показал раньше, вместо этого имеет такое большое расстояние между каждой «меткой».

Если это может помочь это код: 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():/так много вещей, чтобы узнать :) –

Смежные вопросы