2017-08-08 32 views
0

我將'n'個按鈕添加到QHBoxLayout中。在水平佈局中,所有按鈕排成一排,有些按鈕離開屏幕。但我只需要連續7個按鈕。有沒有辦法?試圖限制PyQt4中每行的QPushbutton GUI

class test(QtGui.QWidget): 
    def __init__(self, parent=None): 
     super(test, self).__init__(parent) 
     self.test_btn = QtGui.QPushButton() 
     self.test_btn.show() 
     self.test_btn.clicked.connect(self.btn_fun) 
     self.layout = QtGui.QHBoxLayout() 
     self.setLayout(self.layout) 

    def btn_fun(self): 
     for i in range(42): 
     btns = QtGui.QPushButton('btns %d' %i) 
     self.layout.addWidget(btns) 
if __name__ == '__main__': 
    app = QtGui.QApplication(sys.argv) 
    ex = test() 
    ex.show() 
    sys.exit(app.exec_()) 
+0

對我來說不清楚你在問什麼......你能更具體地說明結果應該是什麼樣子嗎? – TehSphinX

+2

對不起,因爲我是新來的stackoverflow我無法附上我的問題的截圖。我需要限制屏幕內的qpushbuttons排列。如果他們的人數更多,他們必須排成一排。 –

+0

您可能是一位新成員,但您可以爲我們提供一個實例。考慮[如何創建最小,完整和可驗證的示例](https://stackoverflow.com/help/mcve)。當您向我們展示只有三行代碼時,很難爲您提供幫助。 – Matho

回答

2

在這種情況下,QGridLayout更合適。然後,您可以專門分配每個按鈕的行和列,以便每行只有有限的數字。

class test(QtGui.QWidget): 
    def __init__(self, parent=None): 
     ... 
     self.layout = QtGui.QGridLayout() 
     self.setLayout(self.layout) 
     self.max_per_row = 7 
     self.btn_fun() 

    def btn_fun(self): 
     for i in range(42): 
      col = i % self.max_per_row 
      row = i//self.max_per_row 
      btns = QtGui.QPushButton('btns %d' % i) 
      self.layout.addWidget(btns, row, col) 
+0

非常感謝解決方案。問題解決了 –