【问题标题】:pyqt5 combobox.clear() causing unclear issuepyqt5 combobox.clear() 导致不清楚的问题
【发布时间】: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 列文件,使用标题 SITECODEFOLDER
  • @CarlosSR self 只是使用构造函数值的常用指标。在这种情况下,self.comboSiteCodes 是组合框。正如我所说,如果我不清除组合框,代码会起作用,尽管它会将新数据附加到当前组合框内容的末尾。
  • 我的意思是你如何在这里定义你的类......你的组合框是否连接到任何功能?在您的明确声明之前尝试 self.comboSiteCodes.disconnect() 并在重新填充您的组合之后尝试 self.comboSiteCodes.connect()

标签: python pyqt5 qcombobox


【解决方案1】:

总结一下,问题不在于 combobox.clear()

您应该检查您的组合框是否连接到任何类型的功能。如果是这种情况,您应该在清除组合框之前和之后切换该连接

self.comboSiteCodes.disconnect(...)
self.comboSiteCodes.clear()
...
self.comboSiteCodes.connect(...)

【讨论】:

    猜你喜欢
    • 2020-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-20
    • 1970-01-01
    • 2018-12-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多