我正在使用 PyCharm,编写一个特定的应用程序。这是代码
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QComboBox
class Main_widget(QWidget):
def __init__(self):
super().__init__()
self.ui()
def ui(self):
self.b_list = 0
self.act_btn = QPushButton()
self.act_btn.clicked.connect(self.add_combo)
def open_win(self, obj):
if obj.currentText() == 'delay':
# ...
def add_combo(self):
exec('self.act_b' + str(self.b_list) + ' = QComboBox()')
exec('self.act_b' + str(self.b_list) + '.activated.connect(lambda: self.open_win(self.act_b' + str(self.b_list) + '))')
if __name__ == '__main__':
app = QApplication([])
win = Main_widget()
app.exec_()
添加该行后,exec('self.act_b' + str(self.b_list) + '.activated.connect(lambda: self.open_win(self.act_b' + str(self.b_list) + '))')
它开始出现错误
Traceback (most recent call last):
File "string", line 1, in lambda
NameError: name 'self' is not defined
我之前指定了 self.act_b0 变量。帮我弄清楚
不要使用编号对象字段(或编号变量),仅使用列表。它应该看起来像这样:
引用列表中的特定组合只需通过索引,例如
self.act_b[0]
,而不需要所有这些exec
。