我正在使用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的方法吗?
谢谢, 亚历
答案 0 :(得分:0)
uic.loadUi
的第二个参数是可选的,它从Qt Designer中获取顶级类的实例(在您的示例中为QMainWindow
)。
如果您不使用第二个参数,则会创建一个合适的新UI实例,返回的对象将为QMainWindow
类型。
如果你做使用它,Qt Designer中的所有小部件(除了顶级小部件)都将被添加到传入的实例中,返回的对象将是{{ 1}}(即它与传入的对象完全相同)。
因此,Dialogo
在您的示例中是多余的,因为它只会设置为self.ui
。您需要做的就是:
self