![](/img/trans.png)
[英]PyQt5 - Passing user input from QLineEdit to update a dictionary in another file
[英]How to store PyQt5 QLineEdit responses into a dictionary at specific locations in dictionary
我一直在使用幾行編輯來從用戶那里獲取信息。 我知道我可以使用 textchanged() 創建一個信號,然后將其連接到一個插槽,我可以在其中提取用戶為該行編輯輸入的文本。
但是現在假設我想將從特定行編輯中獲得的信息存儲到字典中。 例如,用戶回答self.title = QLineEdit()
,這連接到一個槽,該槽填充字典的“標題”鍵中的響應。 如果用戶回答self.product= QLineEdit()
,這將連接到與以前相同的插槽,但現在將響應填充到字典的“Product”鍵中。 同樣,如果稍后對這些行編輯進行任何更改,則字典應使用新的響應進行更新。
我怎樣才能做到這一點? 我想避免為每個 QlineEdit 創建單獨的插槽,因為這可能很乏味。
answers = {"title": "", "Date": "", "Product": "", "Serial Num": ""}
def projectDetailsUI(self):
layout = QGridLayout()
self.title = QLineEdit()
self.title.setFixedWidth(300)
self.date = QLineEdit()
self.date.setFixedWidth(120)
self.product = QLineEdit()
self.product.setFixedWidth(300)
self.serialNum = QLineEdit()
self.serialNum.setFixedWidth(300)
font = QFont()
title = QLabel("Project Details")
title.setFont(font)
layout.addWidget(title, 0,0)
layout.addWidget(QLabel("Title"), 1,0)
layout.addWidget(self.title, 1, 2)
layout.addWidget(QLabel("Date (dd/mm/yy)"), 2, 0)
layout.addWidget(self.date, 2, 2)
layout.addWidget(QLabel("Name"), 3, 0)
layout.addWidget(self.product, 3, 2)
layout.addWidget(QLabel("Serial Number (if available)"), 4, 0)
layout.addWidget(self.serialNum, 4, 2)
由於您保留了指向每個 QLineEdit 的指針,因此您可以隨時訪問它們的text
屬性。 每當文本發生變化時都會發出textChanged
信號,這種頻繁的信號是不必要的。 而是將每個人的editingFinished
信號連接到一個插槽,在該插槽中為所有鍵分配值。
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
answers = {"title": "", "Date": "", "Product": "", "Serial Num": ""}
class Template(QWidget):
def __init__(self):
super().__init__()
self.projectDetailsUI()
def projectDetailsUI(self):
layout = QGridLayout(self)
self.title = QLineEdit()
self.title.setFixedWidth(300)
self.date = QLineEdit()
self.date.setFixedWidth(120)
self.product = QLineEdit()
self.product.setFixedWidth(300)
self.serialNum = QLineEdit()
self.serialNum.setFixedWidth(300)
font = QFont()
title = QLabel("Project Details")
title.setFont(font)
layout.addWidget(title, 0,0)
layout.addWidget(QLabel("Title"), 1,0)
layout.addWidget(self.title, 1, 2)
layout.addWidget(QLabel("Date (dd/mm/yy)"), 2, 0)
layout.addWidget(self.date, 2, 2)
layout.addWidget(QLabel("Name"), 3, 0)
layout.addWidget(self.product, 3, 2)
layout.addWidget(QLabel("Serial Number (if available)"), 4, 0)
layout.addWidget(self.serialNum, 4, 2)
self.title.editingFinished.connect(self.set_answers)
self.date.editingFinished.connect(self.set_answers)
self.product.editingFinished.connect(self.set_answers)
self.serialNum.editingFinished.connect(self.set_answers)
def set_answers(self):
answers['title'] = self.title.text()
answers['Date'] = self.date.text()
answers['Product'] = self.product.text()
answers['Serial Num'] = self.serialNum.text()
if __name__ == '__main__':
app = QApplication(sys.argv)
window = Template()
window.show()
sys.exit(app.exec_())
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.