【问题标题】:PyQt: QLineEdit with attached labelPyQt:带有附加标签的 QLineEdit
【发布时间】:2016-08-26 04:55:20
【问题描述】:

这可能是一个非常愚蠢的问题,但无论如何我都被它打动了:-(

我有一个带有两个并排列表的窗口和一个带有标签的行编辑控件(参见附图)。我想要的是将行编辑字段放置在相应标签之后而不是第二个列表下方。

这是我的测试代码:

import sys
from PyQt4 import Qt, QtCore, QtGui

class MainWindow(QtGui.QWidget):
     def __init__(self):
        QtGui.QWidget.__init__(self)

        centralLayout = QtGui.QGridLayout()
        centralLayout.setSpacing(2)
        treelist1 = QtGui.QTreeWidget()
        treelist2 = QtGui.QTreeWidget()
        treelist1.setColumnCount(1)
        treelist1.setHeaderLabels(["List 1"])
        treelist2.setColumnCount(1)
        treelist2.setHeaderLabels(["List 2"])
        label = QtGui.QLabel("Line:")
        linedit = QtGui.QLineEdit()
        centralLayout.setRowStretch(0, 8)
        centralLayout.setRowStretch(1, 1)
        centralLayout.addWidget(treelist1, 0, 0)
        centralLayout.addWidget(treelist2, 0, 1)
        centralLayout.addWidget(label, 1, 0)
        centralLayout.addWidget(linedit, 1, 1)
        self.setLayout(centralLayout)
        self.show()

if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)
    mw = MainWindow()
    sys.exit(app.exec_())

提前感谢您提供的任何帮助!

【问题讨论】:

    标签: python pyqt


    【解决方案1】:

    你需要的是:

    • 将小部件设置为垂直布局,而不是网格布局
    • 在该垂直布局中,添加两个水平布局
    • 将两个树形小部件添加到第一个水平布局中
    • 将标签和 lineedit 添加到第二个水平布局

    【讨论】:

      【解决方案2】:

      根据 ypnos 的建议,这是我的问题的答案:

      import sys
      from PyQt4 import Qt, QtCore, QtGui
      
      class MainWindow(QtGui.QWidget):
           def __init__(self):
              QtGui.QWidget.__init__(self)
      
              verticalLayout = QtGui.QVBoxLayout()
              verticalLayout.setSpacing(2)
              horizontalLayout1 = QtGui.QHBoxLayout()
              horizontalLayout2 = QtGui.QHBoxLayout()
              treelist1 = QtGui.QTreeWidget()
              treelist2 = QtGui.QTreeWidget()
              treelist1.setColumnCount(1)
              treelist1.setHeaderLabels(["List 1"])
              treelist2.setColumnCount(1)
              treelist2.setHeaderLabels(["List 2"])
              label = QtGui.QLabel("Line:")
              linedit = QtGui.QLineEdit()
              horizontalLayout1.addWidget(treelist1)
              horizontalLayout1.addWidget(treelist2)
              horizontalLayout2.addWidget(label)
              horizontalLayout2.addWidget(linedit)
              verticalLayout.addLayout(horizontalLayout1)
              verticalLayout.addLayout(horizontalLayout2)
              self.setLayout(verticalLayout)
              self.show()
      
      if __name__ == '__main__':
          app = QtGui.QApplication(sys.argv)
          mw = MainWindow()
          sys.exit(app.exec_())
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-19
        • 1970-01-01
        • 1970-01-01
        • 2017-08-29
        • 2016-01-03
        • 2017-05-26
        相关资源
        最近更新 更多