![](/img/trans.png)
[英]PyQt5 ListWidget. Click an item on listWidget, but pass another item to function
[英]Returning value from ListWidget Selection in another class - PyQt5
我正在編寫一個腳本,當用戶單擊一個按鈕時,將出現一個包含列表的彈出窗口。 當用戶雙擊該列表中的項目時,標簽將在原始窗口中填充選擇。 我的大部分代碼都可以正常工作,但是在將列表中的選定值返回到原始窗口時遇到了麻煩。 這是我到目前為止所做的代碼:
'''
class Main(QWidget):
def __init__(self):
super(Main, self).__init__()
self.fgl = [] # Contains a list, left blank in the example
self.tag = None
self.BA = QPushButton("Phase A: ", self)
self.BA.resize(60,25)
self.BA.move(10,25)
self.LA = QLabel("",self)
self.LA.resize(100,25)
self.LA.move(75,25)
self.LA.setStyleSheet("border: 1px solid black;")
self.BA.clicked.connect(self.tpuA)
def tpuA(self):
self.tag = Tag_PopUp()
self.tag.build(self.fgl)
self.tag.setGeometry(QRect(500, 300, 325, 200))
self.tag.show()
def updateText(self, item):
self.LA.setText(item)
class Tag_PopUp(QWidget):
def __init__(self):
super(Tag_PopUp,self).__init__()
self.listW = QListWidget(self)
self.listW.itemDoubleClicked.connect(self.updateItem)
def build(self, fgl):
for i in fgl:
QListWidgetItem(i, self.listW)
def updateItem(self, item):
x = item.text()
#PopUp.updateText(x)
return x
'''
關於我哪里出錯或我需要的最后幾行代碼有什么建議嗎? 如果您需要其他信息以幫助我,請告訴我
在您的 Tag_PopUp 上創建一個信號,當用戶單擊列表中的項目時發出該信號,並將其連接到您的 Main Widget 以更新標簽。 我在下面的代碼中做了注釋,我做了更改。
例如:
class Main(QWidget):
def __init__(self):
super(Main, self).__init__()
self.fgl = [] # Contains a list, left blank in the example
self.tag = None
self.BA = QPushButton("Phase A: ", self)
self.BA.resize(60,25)
self.BA.move(10,25)
self.LA = QLabel("",self)
self.LA.resize(100,25)
self.LA.move(75,25)
self.LA.setStyleSheet("border: 1px solid black;")
self.BA.clicked.connect(self.tpuA)
def tpuA(self):
self.tag = Tag_PopUp()
self.tag.build(self.fgl)
self.tag.setGeometry(QRect(500, 300, 325, 200))
self.tag.itemUpdated.connect(self.updateText) # added this
self.tag.show()
def updateText(self, item):
self.LA.setText(item)
class Tag_PopUp(QWidget):
itemUpdated = pyqtSignal([str]) # added this
def __init__(self):
super(Tag_PopUp,self).__init__()
self.listW = QListWidget(self)
self.listW.itemDoubleClicked.connect(self.updateItem)
def build(self, fgl):
for i in fgl:
QListWidgetItem(i, self.listW)
def updateItem(self, item):
x = item.text()
self.itemUpdated.emit(x) # added this
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.