【问题标题】:Trying to limit the QPushbuttons per row in PyQt4 GUI试图限制 PyQt4 GUI 中每行的 QPushbuttons
【发布时间】:2018-01-16 04:27:35
【问题描述】:

我在 QHBoxLayout 中添加了“n”个按钮。在水平布局中,所有按钮都排成一排,有些按钮会离开屏幕。但我只需要连续 7 个按钮。有办法吗?

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_())

【问题讨论】:

  • 对我来说不清楚你在问什么......你能更具体地说明结果应该是什么样子吗?
  • 对不起,由于我是 stackoverflow 的新手,我无法附上我的问题的屏幕截图。我需要限制屏幕内的 qpushbuttons 排列。如果数量更多,则必须重新排列。
  • 您可能是新成员,但您可以为我们提供一个工作示例。考虑How to create a Minimal, Complete, and Verifiable example。当您只向我们展示三行代​​码时,很难为您提供帮助。
  • @neo_v 将图片上传到云端并在此处分享链接,我将编辑您的问题并添加该图片。
  • @Matho : 我已经编辑了代码

标签: python python-2.7 user-interface pyqt pyqt4


【解决方案1】:

在这种情况下,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)

【讨论】:

    猜你喜欢
    • 2011-12-02
    • 2017-08-05
    • 1970-01-01
    • 1970-01-01
    • 2018-06-19
    • 1970-01-01
    • 2023-03-24
    • 2016-03-26
    • 2011-11-11
    相关资源
    最近更新 更多