[英]Python PyQt5 change items in listWidget in accordace to the value in comboBox
我正在使用PyQt5(因為這是Anaconda中可用的默認PyQt)來為我的Python程序開發GUI。
這是屏幕截圖:
在comboBox中,有四個值:選項1,選項2,選項3和選項4。我的目的是根據comboBox中的值更改listWidget中列出的項目。 例如,如果我將comboBox中的值更改為“ Option 2”,則listWidget中的項目應更改為“ Option 2 00”,“ Option 2 01”,依此類推,直到循環結束。 但是,到目前為止,我的嘗試並沒有成功。
到目前為止,這是我的代碼:
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_Dialog(object):
def __init__(self):
self.lst = ['Option 1', 'Option 2', 'Option 3', 'Option 4']
def _add_items_to_listWidget(self, text):
for i in range(30):
item=QtWidgets.QListWidgetItem()
name= text+' %02d'%i
item.setText(name)
self.listWidget.addItem(item)
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
Dialog.resize(240, 320)
self.comboBox = QtWidgets.QComboBox(Dialog)
self.comboBox.setGeometry(QtCore.QRect(10, 20, 221, 22))
self.comboBox.setObjectName("comboBox")
self.comboBox.addItems(self.lst)
self.listWidget = QtWidgets.QListWidget(Dialog)
self.listWidget.setGeometry(QtCore.QRect(10, 60, 221, 241))
self.listWidget.setObjectName("listWidget")
self.listWidget.setSelectionMode(QtWidgets.QAbstractItemView.ExtendedSelection)
self._add_items_to_listWidget(str(self.comboBox.currentText()))
self.retranslateUi(Dialog)
QtCore.QMetaObject.connectSlotsByName(Dialog)
def retranslateUi(self, Dialog):
_translate = QtCore.QCoreApplication.translate
Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
Dialog = QtWidgets.QDialog()
ui = Ui_Dialog()
ui.setupUi(Dialog)
Dialog.show()
sys.exit(app.exec_())
這是我第一次使用GUI,因此我在這方面的知識非常有限。 非常感謝。 任何建議將不勝感激。
問候,
阿諾德
您要添加以下信號和方法。
self.comboBox.currentIndexChanged.connect(self.selectionchange)
def selectionchange(self,i):
self.listWidget.clear()
self._add_items_to_listWidget(str(self.comboBox.currentText()))
像這樣:
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_Dialog(object):
def __init__(self):
self.lst = ['Option 1', 'Option 2', 'Option 3', 'Option 4']
def _add_items_to_listWidget(self, text):
for i in range(30):
item=QtWidgets.QListWidgetItem()
name= text+' %02d'%i
item.setText(name)
self.listWidget.addItem(item)
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
Dialog.resize(240, 320)
self.comboBox = QtWidgets.QComboBox(Dialog)
self.comboBox.setGeometry(QtCore.QRect(10, 20, 221, 22))
self.comboBox.setObjectName("comboBox")
self.comboBox.addItems(self.lst)
self.comboBox.currentIndexChanged.connect(self.selectionchange)
self.listWidget = QtWidgets.QListWidget(Dialog)
self.listWidget.setGeometry(QtCore.QRect(10, 60, 221, 241))
self.listWidget.setObjectName("listWidget")
self.listWidget.setSelectionMode(QtWidgets.QAbstractItemView.ExtendedSelection)
self._add_items_to_listWidget(str(self.comboBox.currentText()))
self.retranslateUi(Dialog)
QtCore.QMetaObject.connectSlotsByName(Dialog)
def retranslateUi(self, Dialog):
_translate = QtCore.QCoreApplication.translate
Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
def selectionchange(self,i):
self.listWidget.clear()
self._add_items_to_listWidget(str(self.comboBox.currentText()))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
Dialog = QtWidgets.QDialog()
ui = Ui_Dialog()
ui.setupUi(Dialog)
Dialog.show()
sys.exit(app.exec_())
給出:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.