如何在PyQt5中正确调用小部件?

时间:2015-02-22 09:19:15

标签: user-interface qt-designer pyqt5

我正在使用PyQt5和Qt Designer来创建UI。加载* .ui文件后,我可以用不同的方式调用小部件。我在Qt Designer中定义了两个pushButton对象,名称为ButtonBrowse和ButtonDoit。

class Dialogo(QMainWindow):
    def __init__(self):
        QMainWindow.__init__(self)
        self.ui=uic.loadUi("UserInterfaces/QtGUI1_2.ui",self)

        self.ui.ButtonBrowse.clicked.connect(self.load_file)
        self.ButtonDoit.clicked.connect(self.doit)

我想知道为什么ButtonDoit正在工作,因为我没有在自己和ButtonDoit之间使用ui?我会这样做有什么麻烦吗?

我猜正确的方法是用于ButtonBrowse的方法吗?

谢谢, 亚历

1 个答案:

答案 0 :(得分:0)

uic.loadUi的第二个参数是可选的,它从Qt Designer中获取顶级类的实例(在您的示例中为QMainWindow)。

如果您使用第二个参数,则会创建一个合适的新UI实例,返回的对象将为QMainWindow类型。

如果你使用它,Qt Designer中的所有小部件(除了顶级小部件)都将被添加到传入的实例中,返回的对象将是{{ 1}}(即它与传入的对象完全相同)。

因此,Dialogo在您的示例中是多余的,因为它只会设置为self.ui。您需要做的就是:

self