如何解决PyQ5-添加操作以保存取消和应用按钮
我想用保存用户的输入来制作一个简单的信息表。我使用“保存”,“取消”和“应用”按钮创建了信息表。但是我无法在按钮上添加操作。
保存按钮:应将新用户信息保存到先前用户信息的底行。
取消按钮:中断程序。
from PyQt5.QtWidgets import QDialogButtonBox
from PyQt5.QtWidgets import QFormLayout
from PyQt5.QtWidgets import QLineEdit
from PyQt5.QtWidgets import QVBoxLayout
from PyQt5.QtWidgets import *
class InputDialog(QDialog):
"""Dialog."""
def __init__(self,parent=None):
"""Initializer."""
super().__init__(parent)
self.setWindowTitle('Information Window')
dlglayout = QVBoxLayout()
formlayout = QFormLayout()
formlayout.addRow('Fırst Name:',QLineEdit())
formlayout.addRow('Second Name:',QLineEdit())
formlayout.addRow('Age:',QLineEdit())
formlayout.addRow('Marital Status:',QLineEdit())
formlayout.addRow('Education:',QLineEdit())
formlayout.addRow('Job:',QLineEdit())
dlglayout.addLayout(formlayout)
btns = QDialogButtonBox()
btns.setStandardButtons(
QDialogButtonBox.Cancel | QDialogButtonBox.Save)
dlglayout.addWidget(btns)
self.setLayout(dlglayout)
def getInputs(self):
return self.first.text(),self.second.text()
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
dialog = InputDialog()
if dialog.exec():
print(dialog.getInputs())
exit(0)
解决方法
如果要使用QDialogButtonBox,则按钮动作是通过接受和拒绝的信号发出的,因此这些信号必须分别连接到QDialog的“接受”和“拒绝”插槽。
另一方面,从未创建“第一”和“第二”,因此它们也会引发异常。
class InputDialog(QDialog):
"""Dialog."""
def __init__(self,parent=None):
"""Initializer."""
super().__init__(parent)
self.setWindowTitle("Information Window")
self.first = QLineEdit()
self.second = QLineEdit()
dlglayout = QVBoxLayout(self)
formlayout = QFormLayout()
formlayout.addRow("Fırst Name:",self.first)
formlayout.addRow("Second Name:",self.second)
formlayout.addRow("Age:",QLineEdit())
formlayout.addRow("Marital Status:",QLineEdit())
formlayout.addRow("Education:",QLineEdit())
formlayout.addRow("Job:",QLineEdit())
dlglayout.addLayout(formlayout)
btns = QDialogButtonBox()
btns.setStandardButtons(QDialogButtonBox.Cancel | QDialogButtonBox.Save)
dlglayout.addWidget(btns)
btns.accepted.connect(self.accept)
btns.rejected.connect(self.reject)
def getInputs(self):
return self.first.text(),self.second.text()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。