pyqt5 - PyQt5 获取具有多个值的输入
问题描述
我想在 for 循环中打开一个新的对话框(弹出)窗口,其中包含我将保存到数据库中的字段,例如
onPrintButton(self):
for file in files:
...
openDialogWindow() the for cycle will stop here until I press OK button with filled in values
在打开的对话框窗口中会有各种字段(其中一些已经预填充),例如
date
file_name
printer_name
等等
当我单击“确定”按钮时,值将保存到数据库中(您可以将它们打印到控制台),并且 for 循环将在它停止的地方继续。
您能否向我展示此类功能的脚手架(使用哪些 Qt 类等)?
解决方案
这是一个建议,你的 QDialog 可以有你想要的任何东西。
class Dialog(QDialog):
accepted = pyqtSignal(dict)
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.date = QDateEdit()
self.date.setDisplayFormat('MMM d, yyyy')
self.date.setDate(QDate.currentDate())
self.file_name = QLineEdit()
self.file_name.textEdited[str].connect(self.unlock)
self.printer_name = QLineEdit()
self.btn = QPushButton('OK')
self.btn.setDisabled(True)
self.btn.clicked.connect(self.ok_pressed)
form = QFormLayout(self)
form.addRow('Date', self.date)
form.addRow('*File Name', self.file_name)
form.addRow('Printer Name', self.printer_name)
form.addRow(self.btn)
def unlock(self, text):
if text:
self.btn.setEnabled(True)
else:
self.btn.setDisabled(True)
def ok_pressed(self):
values = {'Date': self.date.date(),
'File': self.file_name.text(),
'Printer': self.printer_name.text()}
self.accepted.emit(values)
self.accept()
当您从父小部件调用它时:
class Template(QWidget):
def __init__(self):
super().__init__()
dg = Dialog()
dg.accepted.connect(self.do_something)
dg.exec_()
def do_something(self, values):
print(values['File'], values['Date'], values['Printer'])
推荐阅读
- python - 无法将列表转换为 pyspark 数据框中的熊猫数据框
- c++ - 从另一个类更改可生成蓝图的变量(虚幻 C++)
- c# - 如何从 IdentifierNameSyntax 获取 BaseType
- jquery - 整个部分的全页滑动,除了 .swiper-container div Jquery Mobile Swipe
- reactjs - 如何从未在任何地方导入且不返回任何文件的文件调度存储
- numpy - 仅获取 numpy 数组的一个通道的值
- image - 跨两个页面加入图像背景问题
- javascript - 在不使用交互的情况下使用画布在 OpenLayers 中操作图像数据?
- java - 如何让在 WebLogic 服务器上运行的应用程序将 Shiro 消息写入服务器上的日志文件?
- reactjs - React DispatchEvent 未触发 Keydown