python - 如何从 PyQt5 中的多个文本框中获取信息,并将它们存储到各自的类中
问题描述
我需要访问每个单独类的文本框中的信息)所以我可以使用每个类中的变量进行计算我知道如何在没有 GUI 的情况下进行计算,但使用像 PyQt5 这样的 GUI
>>> a = 'ABC, DEF, GHIJ'
>>> a.split(',')
['ABC', ' DEF', ' GHIJ']
>>> a = a.split(',')
>>> c = '7.00, 8.00, 9.00'
>>> c = c.split(',')
>>> e = '7.20, 8.20, 9.20'
>>> e = e.split(',')
h = {}
class Profile:
def __init__(self, *args):
self.one = h['info1']
self.two = h['info2']
self.three = h['info3']
>>> e = []
>>> for i in range(len(a)): # Takes splitted info above, combines it, and adds it to a dictionary(Ex: h['info1'] = ABC, h['info2'] = 7.00, h['info'] = 7.20)
h['info1'] = a[i]
h['info2'] = c[i]
h['info3'] = e[i]
e.append(Profile(h['info1'], h['info2'], h['info3'])) # Adds each combined list index to its own individual class
解决方案
您基本上会将某些小部件的信号连接QPushButton.clicked
到与原始代码执行相同操作的函数。
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
class Profile:
def __init__(self, h):
self.one = h['info1']
self.two = h['info2']
self.three = h['info3']
class Template(QWidget):
def __init__(self):
super().__init__()
self.text_boxes = [QLineEdit() for i in range(3)]
form = QFormLayout(self)
for i, v in enumerate(self.text_boxes):
form.addRow(f'Box {i}', v)
btn = QPushButton('Enter')
btn.clicked.connect(self.get_values)
form.addRow(btn)
def get_values(self):
a, c, e = [x.text().split(',') for x in self.text_boxes]
h = {}
profiles = []
for i in range(len(a)):
h['info1'] = a[i]
h['info2'] = c[i]
h['info3'] = e[i]
profiles.append(Profile(h))
print('Profiles saved', profiles)
if __name__ == '__main__':
app = QApplication(sys.argv)
gui = Template()
gui.show()
sys.exit(app.exec_())
推荐阅读
- mysql - MySQL:某些类别的独特产品计数
- pyspark - PySpark 中的 GCS 连接器未读取 CSV
- kivy - 如何在 Kivy 中重新创建此日期滚动条?
- ios - 快速变换旋转洛蒂动画不工作
- sql - 寻找一个简洁的 SQL 查询
- javascript - Vue.js 'props' 在模板中工作,但在方法中未定义
- ruby - “Bundler 找不到 gem 的兼容版本”没有锁定文件
- c# - dotnet core 3.1 全局路由规则
- c++ - 什么是让 C++ 将文本数据放入程序而不是使用 fstream 的更好方法
- neo4j - Cypher - 找到最常见的用户 + 存储它