gpt4 book ai didi

python - 如何刷新Qcombobox [python]中的项目?

转载 作者:行者123 更新时间:2023-11-28 20:40:31 26 4
gpt4 key购买 nike

我有一个显示在 Qcombobox 中的数据列表(使用“addItems”)现在 - 如果通过使用按钮从文件加载数据来更改列表 - 我在 combobx 中看不到新数据。新数据在那里(加载后我可以打印它)我想念什么?下面是简化图形用户界面的代码

from PyQt4 import QtCore, QtGui
from PyQt4.QtGui import QFileDialog
import pandas as pd

try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
def _fromUtf8(s):
return s

try:
_encoding = QtGui.QApplication.UnicodeUTF8
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig)

class Ui_MainWindow(object):
def __init__(self):
self.comboData=['None']

def setupUi(self, MainWindow):
MainWindow.setObjectName(_fromUtf8("MainWindow"))
MainWindow.resize(456, 172)
self.centralwidget = QtGui.QWidget(MainWindow)
self.centralwidget.setObjectName(_fromUtf8("centralwidget"))

self.comboBox = QtGui.QComboBox(self.centralwidget)
self.comboBox.setGeometry(QtCore.QRect(120, 60, 69, 22))
self.comboBox.setObjectName(_fromUtf8("comboBox"))
self.comboBox.setEditable(True)
self.comboBox.addItems(self.comboData)

self.pushButton = QtGui.QPushButton(self.centralwidget)
self.pushButton.setGeometry(QtCore.QRect(260, 60, 75, 23))
self.pushButton.setObjectName(_fromUtf8("pushButton"))
self.pushButton.clicked.connect(self.load)

MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtGui.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 456, 21))
self.menubar.setObjectName(_fromUtf8("menubar"))
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtGui.QStatusBar(MainWindow)
self.statusbar.setObjectName(_fromUtf8("statusbar"))
MainWindow.setStatusBar(self.statusbar)

self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)

def retranslateUi(self, MainWindow):
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow", None))
self.pushButton.setText(_translate("MainWindow", "Load", None))

def load(self):
fileName=QFileDialog.getOpenFileName(MainWindow,'Load File')
data_pd=pd.read_csv(fileName,index_col=0,na_filter=False)
self.comboData=list(data_pd.var1)
print(self.comboData)



if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
MainWindow = QtGui.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())

最佳答案

您只将数据加载到 self.comboData 而不会将它们加载到 self.comboBox。在结束时

def load(self):

添加以下几行:

self.comboBox.clear()       # delete all items from comboBox
self.comboBox.addItems(self.comboData) # add the actual content of self.comboData

由于 QComboBox 使用的模型会在项目中的数据发生更改时发出 dataChanged() 信号,因此组合框会自动重新绘制,无需更新组合框

self.comboBox.update()

关于python - 如何刷新Qcombobox [python]中的项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35683458/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com