我试图弄清楚如何使用PySide2在列表小部件和行编辑小部件之间传递值。我有一个包含三个键的字典和一个与三个字典键具有相同值的列表。当用户单击列表框中的值时,我希望它从字典键值对中返回值。如果我在代码中手动输入键,我能够从字典中检索值,但我无法让它接受列表小部件中的值。以下是我尝试使用的代码:
import sys
from PySide2.QtGui import *
from PySide2.QtCore import *
from PySide2.QtWidgets import QLineEdit, QApplication, QMessageBox, QListWidget
from PySide2 import QtWidgets
item_dict = {1: "First Item",
2: "Second Item",
3: "Third Item"}
item_list = [1,2,3]
class myListWidget(QListWidget):
def Clicked(self,item):
click_id = self.item.text()
class myTextWidget(QLineEdit):
def change_text(self):
click_id = myListWidget.Clicked
self.setText = item_dict[click_id]
def main():
app = QApplication(sys.argv)
window = QtWidgets.QWidget()
layout = QtWidgets.QVBoxLayout(window)
listWidget = myListWidget()
for i in item_dict:
listWidget.addItem(str(i))
TextWidget = myTextWidget()
#listWidget.itemClicked.connect(listWidget.Clicked)
listWidget.itemClicked.connect(myTextWidget.change_text)
layout.addWidget(listWidget)
layout.addWidget(TextWidget)
window.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
当我点击列表小部件时,我得到以下错误:
Traceback (most recent call last):
File "C:\Users\Mythranor\Desktop\VN Builder\PyQtTut\listview2.py", line 21, in change_text
self.setText = item_dict[click_id]
KeyError: <function myListWidget.Clicked at 0x000002B6286A8F78>
我还尝试直接在change_text函数中调用listWidget.item.text,但它说listWidget变量在类中无法识别。
潇湘沐
相关分类