代码之家  ›  专栏  ›  技术社区  ›  user1050619

设置在pyqt中不工作的小部件的同一实例

  •  0
  • user1050619  · 技术社区  · 7 年前

    我有一个pyqt应用程序,当在gridlayout上使用qlabel类的同一实例时,它不起作用。我只看到一个实例被显示。

    import sys
    
    from PyQt5.QtWidgets import QApplication, QWidget, QToolTip, QPushButton, QMessageBox, QAction, qApp, QMenu, QTextEdit, QToolBar, QMdiArea, QGridLayout, QLabel, QDialog
    from PyQt5.QtGui import QFont, QIcon, QPainter, QVector2D
    from PyQt5.Qt import QDesktopWidget, QMainWindow, Qt, QHBoxLayout, QVBoxLayout,\
        QLineEdit
    from PyQt5.QtCore import QPoint
    
    
    class Example(QDialog):
        count = 0
        def __init__(self, *args, **kwargs):
            super(Example, self).__init__(*args, **kwargs)            
            self.initUI()
    
    
        def initUI(self):
            grid = QGridLayout()
            a1 = QLabel('alphanumeric characters')
            a2 = QLabel('alphanumeric characters')
    
            grid.addWidget(QLabel('Name'), 1, 0)
            grid.addWidget(QLineEdit(), 1, 1)
            grid.addWidget(QLabel('only alphanumeric'), 1, 2)
            grid.addWidget(QLabel('Street1'), 2, 0)
            grid.addWidget(QLineEdit(), 2, 1)
            grid.addWidget(QLabel('only alphanumeric'), 2, 2)
            grid.addWidget(QLabel('Street2'), 3, 0)
            grid.addWidget(QLineEdit(), 3, 1)
            grid.addWidget(QLabel('only alphanumeric'), 3, 2)
            grid.addWidget(QLabel('City'), 3, 0)
            grid.addWidget(QLineEdit(), 3, 1)
            grid.addWidget(QLabel('only alphanumeric'), 3, 2)
    
            self.setLayout(grid)
            self.setGeometry(500, 500, 500, 500)
            self.setWindowTitle('Lines')
            self.show()
    
    
    if __name__ == '__main__':
    
        app = QApplication(sys.argv)
        ex = Example()
    #     ex.show()
        sys.exit(app.exec_())
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   eyllanesc    7 年前

    首先坐标从(0,0)开始,所以我已经修正了部分。

    要解决这个问题,你不必一对一地添加 addWidget() 方法已重载,因此分别有一个4和5参数指示行和列中的跨度。

    void addWidget(qWidget*Widget,整行,整列,qt::对齐 对齐=…)

    void addWidget(QWidget*widget,int fromRow,int fromColumn,int 行间隔 int 柱跨 ,Qt::对齐方式=…)

    import sys
    
    from PyQt5.QtWidgets import QApplication, QDialog, QGridLayout, QLabel, QLineEdit
    
    
    class Example(QDialog):
        def __init__(self, *args, **kwargs):
            super(Example, self).__init__(*args, **kwargs)            
            self.initUI()
    
        def initUI(self):
            grid = QGridLayout(self)
            a1 = QLabel('alphanumeric characters')
            a2 = QLabel('alphanumeric characters')
    
            grid.addWidget(QLabel('Name'), 0, 0)
            grid.addWidget(QLineEdit(), 0, 1)
            grid.addWidget(QLabel('Street1'), 1, 0)
            grid.addWidget(QLineEdit(), 1, 1)
            grid.addWidget(QLabel('Street2'), 2, 0)
            grid.addWidget(QLineEdit(), 2, 1)
            grid.addWidget(QLabel('City'), 3, 0)
            grid.addWidget(QLineEdit(), 3, 1)
    
            grid.addWidget(QLabel('only alphanumeric'), 0, 2, 4, 1)
    
            self.setGeometry(500, 500, 500, 500)
            self.setWindowTitle('Lines')
            self.show()
    
    
    if __name__ == '__main__':
    
        app = QApplication(sys.argv)
        ex = Example()
    #     ex.show()
        sys.exit(app.exec_())
    
    推荐文章