【发布时间】:2021-08-23 07:48:19
【问题描述】:
我有一个显示 2 个值的组合框 a | b 这些取自 csv 文件,
正常的实现没有问题,请参阅这篇文章了解更多详细信息:displaying two values in a pyqt5 combobox and passing those values
但是,我有一个按钮可以将一行附加到 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)
【问题讨论】:
-
什么是自我?你最初是如何填充你的组合框的? csv的格式?
-
@eyllanesc 通常我会,但这使用 pyqt5,因此添加 gui 需要很多时间。 csv 是一个简单的 2 列文件,使用标题
SITECODE和FOLDER。 -
@CarlosSR self 只是使用构造函数值的常用指标。在这种情况下,
self.comboSiteCodes是组合框。正如我所说,如果我不清除组合框,代码会起作用,尽管它会将新数据附加到当前组合框内容的末尾。 -
我的意思是你如何在这里定义你的类......你的组合框是否连接到任何功能?在您的明确声明之前尝试 self.comboSiteCodes.disconnect() 并在重新填充您的组合之后尝试 self.comboSiteCodes.connect()