Pyside GUI功能覆盖问题

时间:2017-01-10 21:19:07

标签: python python-3.x pyside

我正在学习在PySide中制作GUI。

  • 如何重新调整QHBoxLayout()内的按钮?我尝试了button_1.setFixedWidth()和button_1.setFixedHeight()这些使按钮不可伸缩。 button_1.move()也不起作用。

  • 我还创建了一个具有Qlabel和QLineEdit的函数angle(),当我运行程序时,按钮功能覆盖了角度函数,只显示GUI右上角的按钮。

  • 如何调整QLineEdit的长度并使其不延伸整个窗口?

    import sys
    from PySide.QtGui import *
    from PySide.QtCore import *
    
    class MainWindow(QMainWindow):
    #GUI Layout
        def __init__(self,parent = None):
        super(MainWindow, self).__init__(parent)
    
        widget = QWidget()
        self.setCentralWidget(widget)
        self.setWindowTitle("Example")
        self.setGeometry(400, 100, 1500, 800)
        self.angles()
        self.makebuttons()
    
        def angles(self):
            central_widget = QWidget()
            self.setCentralWidget(central_widget)
    
            Rotation = QLabel('Rotation:')
            Tilt = QLabel('Tilt:')
    
            RoatationEdit = QLineEdit()
            TiltEdit = QLineEdit()
    
            grid = QGridLayout()
            grid.setSpacing(2)
    
            grid.addWidget(Rotation,1,0)
            grid.addWidget(RoatationEdit, 1, 1)
            grid.addWidget(Tilt,2,0)
            grid.addWidget(TiltEdit, 2, 1)
            central_widget.setLayout(grid)
    
       def makebuttons(self):
           central_widget = QWidget()
           self.setCentralWidget(central_widget)
    
           hbox = QHBoxLayout()
           button_1 = QPushButton("Button 1",self)
           button_1.move(0,30)
           hbox.addStretch(1)
           button_2 = QPushButton("Button 2",self)
           hbox.addStretch(1)
           hbox.addWidget(button_1)
           hbox.addWidget(button_2)
    
           vbox = QVBoxLayout()
           vbox.addStretch(1)
           vbox.addLayout(hbox)
    
           central_widget.setLayout(vbox)
         # central_widget.addLayout(vbox)
    
    
    if __name__ == '__main__':
    
        import sys
        app = QApplication(sys.argv)
        window = MainWindow()
        window.show()
        sys.exit(app.exec_())
    

2 个答案:

答案 0 :(得分:0)

  • 如果您想调整使用大小:button_1.setFixedSize({your scale}*button_1.size())

  • makebuttons函数通过删除以上所有内容创建另一个centralWidget,因此您无法看到您对角度所做的操作。

  • 要更改QLineEdit的宽度,请使用{your QlineEdit} .setFixedWidth({your width})

答案 1 :(得分:0)

我使用 Qt Designer 来完成我的所有 Pyside GUI工作,即使它是一个相当简单的程序。它不仅仅是一个拖放式WYSISYG工具。对于示例中的按钮之类的东西,您将看到一个可配置属性列表,包括按钮的大小调整参数以及配置布局的功能。

因此,我的解决方案是在 QT Designer 中创建GUI,然后在使用pyside-uic工具将代码转换为python之前修改其布局。然后只需将生成的python模块导入到您的代码中。从那里开始,您仍然可以在代码中重新配置您想要的任何内容,例如,您需要在程序过程中更改GUI的外观。