【发布时间】:2016-10-22 13:46:23
【问题描述】:
我正在开发一个 PyQt5 应用程序:
我有两个类(mainWindow 和 devicePanel)。 在 mainWindow 中有一些按钮(qbtn),这使得 devicePanel 在单击时出现。 我的问题是我需要在“qbtn”点击事件上覆盖 devicePanel 类中的一些变量。
所以:
当按下 mainWindow.qbtn 时,它应该让 devicePanel 出现并覆盖它的一些变量(l_ip、l_st 等)。
我不能将 mainWindow 设为 devicePanel 的父级,请不要建议,它不能解决我的问题。
这是我的代码:
class mainWindow(QWidget):
def __init__(self, parent=None):
super(mainWindow, self).__init__(parent)
self.initUI()
def initUI(self):
self.resize(1280, 800)
self.setWindowTitle('Test window')
self.genBtns()
self.show()
def genBtns(self):
devices = []
devices.append(['A', 21, 1, 'W', '2', 'n/a'])
devices.append(['A', 22, 2, 'O', '0', 'n/a'])
devices.append(['A', 31, 3, 'W', '32', '11'])
for a in range (0, int(len(devices))):
self.addButton(devices[a][0], devices[a][1], devices[a][2], devices[a][3], devices[a][4], devices[a][5])
def addButton(self, z, x, y, status, bp, cp):
qbtn = QPushButton(str(x), self)
qbtn.clicked.connect(lambda: self.buttonClicked(z, x, y, status, bp, cp)) # BUTTON CLICK EVENT
qbtn.resize(70, 70)
qbtn.move(20, 20)
if (status == 'O'):
qbtn.setStyleSheet("background-color: red")
elif (status == 'W'):
qbtn.setStyleSheet("background-color: blue")
else:
qbtn.setStyleSheet("background-color: gray")
def buttonClicked(self, z, x, y, status, bp, cp): # BUTTON CLICK METHOD
self.dp = devicePanel()
self.dp.initUI()
self.dp.l_ip = '192.168.0.134'
self.dp.show()
class devicePanel(QWidget):
l_ip = '192.168.0.135' #NEED TO CHANGE THESE VALUES!
l_st = 'active'
l_bp = '10'
l_cp = '2'
l_bc = '90'
l_cc = '150'
l_sc = '240'
def __init__(self):
super(devicePanel, self).__init__(None)
self.addDPbtns()
self.initUI()
【问题讨论】:
-
也许可以定义类,这样你就可以做到
devicePanel('192.168.0.134', ...)
标签: python python-3.x oop pyqt pyqt5