我正在用PyQt5开发一个GUI。我要教自己的第一步。我很难理解类何时继承方法/属性等,以及它们有哪些可用的方法——我想这是一个与范围相关的问题?我已经制作了一个MWE到我的图形用户界面下面。会有更多的页面。在
堆栈应该初始化为显示“MainMenu”小部件/对象(左图)。点击“下一页”按钮可以切换堆栈顺序,将“OtherPage”小部件/对象放在顶部(下图右侧)。我把每一页都作为一个类创建,认为这将是一个组织我的项目的好方法。这种做法是好是坏?在
如果nextPg.clicked.connect(self.drawOtherPage())
行被注释掉,GUI就会工作(初始化),但是当然,单击按钮什么也不做。我可以切换初始的堆栈顺序,这样“other”小部件位于堆栈的顶部,它可以很好地显示出来,所以我认为这个类也可以工作。当代码中包含上述行时,将引发以下错误:
in __init__
nextPg.clicked.connect(self.drawOtherPage())
AttributeError: 'MainMenu' object has no attribute 'drawOtherPage'
我认为对super()
的调用应该允许子类(在本例中是MainMenu)从父类(RootInit)继承方法。因此,我认为这应该使drawOtherPage方法可用于button connect信号。很明显,误差是由于该方法不可用造成的。在
我做错什么了?我应该在方法中创建这些“页面”小部件吗?它们需要在RootInit类下还是可以位于.py文件的顶层?我正在努力遵循最佳实践,因为项目最终会变得相当大。幸运的是,它的大部分应该是根据点击了什么按钮而变化的页面——因此我认为类是有帮助的。请严厉对待代码和我的python/PyQt语言,努力学习——谢谢!在
^{pr2}$
您的代码有以下错误:
变量}方法。
self
引用了该类的同一个实例,在您的例子中,self
引用了MainMenu
的一个实例,如果我们观察到MainMenu
它没有任何{另一个错误是调用父级构造函数两次:
在第一个构造函数中,您指定了一个父级,而在第二个构造函数中,则没有。为了在python中澄清,有几种方法可以调用父级的构造函数:
^{pr2}$所以你应该只使用其中一个。在
另一个错误是信号是通过函数名连接的,不能用括号计算函数
对于涉及多个对象的函数或方法的最后一次使用应该在两个对象都可以访问的地方完成,在您的例子中,您可以利用作为},并通过方法
MainMenu
:self.main = MainMenu(self)
的父对象{parent()
访问到该元素的连接。上述所有操作都需要将
MainMenu
类修改为以下内容:相关问题 更多 >
编程相关推荐