我有Python 3.9和PyQt5 5.15.4.
在QT设计器中,我创建了一个下拉列表,在初始化代码中,我用以下值填充它:
self.MEMSDropDown.addItems(["Select MEMS" ])
MEMS_avail = ['MEMS_1' , 'MEMS_2' , 'MEMS_3' , 'MEMS_4' , 'MEMS_5' , 'MEMS_6' ]
self.MEMSDropDown.addItems(MEMS_avail)
然后,我进行信号/回叫连接:
self.MEMSDropDown.currentIndexChanged.connect(self.Changed__MEMSDropDown)
然后,在函数"Changed__MEMSDropDown"中,我编写了:
#self.blockSignals(True)
def Changed__MEMSDropDown(self, i):
self.MEMSDropDown.clear()
print("'Changed__MEMSDropDown' function is called now.")
#self.blockSignals(False)
现在我的问题是,这个函数被调用了两次,或者,如果我使用"clear"向下拉列表添加更多项,如果我使用函数"self.MEMSDropDown.addItems(MEMS_avail)"添加,这个函数似乎会再次被迭代调用,例如7次。
但是:我希望它只在我用鼠标选择另一个项目时改变一次。我不希望这个函数在我通过编程添加或删除项目时被调用。我已经尝试过"块信号",正如上面注解的那样,但是如果我注解它们,程序就会崩溃。
所以程序应该表现为:调用"Changed__MEMSDropDown"后,应立即从项目列表中删除条目"Select MEMS",并保留其余条目。
我能做些什么,使函数只被调用一次,而不是多次?
多谢了!
见上文。P.S.:我对Python和QT都是全新的。
1条答案
按热度按时间kt06eoxx1#
我解决了:它适用于:“自我. MEMSd删除.块信号(真)”和“假”。