pyqt5 combobox.clear() 造成不清楚的问题
pyqt5 combobox.clear() causing unclear issue
我有一个显示 2 个值的组合框 a
| b
这些取自 csv 文件,
正常实施没有问题,请参阅此 post 了解更多详细信息:
但是,我有一个按钮可以将一行附加到 csv,然后我希望使用新的 csv 内容更新组合框。所以,显然我首先清除了已经加载到组合框中的值。
在下面的代码中,问题似乎是 self.comboSiteCodes.clear()
,如果我删除它,代码会成功运行,尽管它会将更新的 csv 附加到组合框列表的末尾,从而产生重复。
我哪里做错了?
def add_job(self):
code, good = QInputDialog.getText(self, '\n', 'Input Site Code')
if good:
folder, good = QInputDialog.getText(self, '\n', 'Input Folder Prefix')
if good:
with open("data/job_list.csv", "a") as myfile:
myfile.write("\n" + code + ',' + folder)
# self.update_site_folder_combo()
self.comboSiteCodes.clear()
job_list = pd.read_csv(filepath_or_buffer="data/job_list.csv", header=0)
tuples = job_list[['SITECODE', 'FOLDER']]
for row in tuples.itertuples():
self.comboSiteCodes.addItem('{} | {}'.format(row.FOLDER, row.SITECODE), (row.FOLDER, row.SITECODE))
self.comboSiteCodes.currentIndexChanged.connect(self.comboSiteCodes_index_changed)
总结一下,问题不在combobox.clear()
您应该检查您的组合框是否连接到任何类型的函数。如果是这种情况,您应该在清除组合框之前和之后切换该连接
self.comboSiteCodes.disconnect(...)
self.comboSiteCodes.clear()
...
self.comboSiteCodes.connect(...)
我有一个显示 2 个值的组合框 a
| b
这些取自 csv 文件,
正常实施没有问题,请参阅此 post 了解更多详细信息:
但是,我有一个按钮可以将一行附加到 csv,然后我希望使用新的 csv 内容更新组合框。所以,显然我首先清除了已经加载到组合框中的值。
在下面的代码中,问题似乎是 self.comboSiteCodes.clear()
,如果我删除它,代码会成功运行,尽管它会将更新的 csv 附加到组合框列表的末尾,从而产生重复。
我哪里做错了?
def add_job(self):
code, good = QInputDialog.getText(self, '\n', 'Input Site Code')
if good:
folder, good = QInputDialog.getText(self, '\n', 'Input Folder Prefix')
if good:
with open("data/job_list.csv", "a") as myfile:
myfile.write("\n" + code + ',' + folder)
# self.update_site_folder_combo()
self.comboSiteCodes.clear()
job_list = pd.read_csv(filepath_or_buffer="data/job_list.csv", header=0)
tuples = job_list[['SITECODE', 'FOLDER']]
for row in tuples.itertuples():
self.comboSiteCodes.addItem('{} | {}'.format(row.FOLDER, row.SITECODE), (row.FOLDER, row.SITECODE))
self.comboSiteCodes.currentIndexChanged.connect(self.comboSiteCodes_index_changed)
总结一下,问题不在combobox.clear()
您应该检查您的组合框是否连接到任何类型的函数。如果是这种情况,您应该在清除组合框之前和之后切换该连接
self.comboSiteCodes.disconnect(...)
self.comboSiteCodes.clear()
...
self.comboSiteCodes.connect(...)