[英]The python pyqt5 class references
panel.py The class that references buttonA in class can not be signaled But in the panel2.py reference buttonA class can be achieved If you want to repeat the use of buttonA class in the panel.py class, how to deal with such a problem. panel.py 类中引用buttonA的类不能发信号 但是在panel2.py中引用buttonA类可以实现 如果要在panel.py类中重复使用buttonA类,这样的问题怎么处理. Try to inherit buttonA class can only occur once btnA1
尝试继承 buttonA 类只能出现一次 btnA1
#!/usr/bin/env python
from PyQt5.QtWidgets import QWidget, QPushButton, QVBoxLayout, QApplication
class ButtonA(QWidget):
def __init__(self):
super().__init__()
def createButton(self):
self.btnA1 = QPushButton("btnA1", self)
self.btnA1.pressed.connect(self.onbtnA1Pressed)
self.btnA1.released.connect(self.onbtnA1Released)
vbox = QVBoxLayout()
vbox.addWidget(self.btnA1)
return vbox
def onbtnA1Pressed(self):
self.btnA1.setText("btnA1 clicked")
def onbtnA1Released(self):
self.btnA1.setText("btnA1")
#!/usr/bin/env python
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QApplication
import sys, buttonA
class Panel(QWidget):
def __init__(self):
super().__init__()
def createPanel(self):
a1 = buttonA.ButtonA()
a2 = buttonA.ButtonA()
v1 = a1.createButton()
v2 = a2.createButton()
vbox = QVBoxLayout()
vbox.addLayout(v1)
vbox.addLayout(v2)
self.setLayout(vbox)
if __name__ == "__main__":
app = QApplication(sys.argv)
p = Panel()
p.createPanel()
p.show()
sys.exit(app.exec_())
#!/usr/bin/env python
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout
import buttonA, sys
app = QApplication(sys.argv)
w = QWidget()
a1 = buttonA.ButtonA()
a2 = buttonA.ButtonA()
v1 = a1.createButton()
v2 = a2.createButton()
vbox = QVBoxLayout()
vbox.addLayout(v1)
vbox.addLayout(v2)
w.setLayout(vbox)
w.show()
sys.exit(app.exec_())
In panel.py
, in your createPanel
function you have to use an instance, in this case self
, when declaring instance variables.在
panel.py
,在您的createPanel
函数中,您必须在声明实例变量时使用一个实例,在本例中为self
。
This should work:这应该有效:
panel.py面板.py
#!/usr/bin/env python
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QApplication
import sys, buttonA
class Panel(QWidget):
def __init__(self):
super().__init__()
def createPanel(self):
self.a1 = buttonA.ButtonA()
self.a2 = buttonA.ButtonA()
self.v1 = self.a1.createButton()
self.v2 = self.a2.createButton()
vbox = QVBoxLayout()
vbox.addLayout(self.v1)
vbox.addLayout(self.v2)
self.setLayout(vbox)
if __name__ == "__main__":
app = QApplication(sys.argv)
p = Panel()
p.createPanel()
p.show()
sys.exit(app.exec_())
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.