PyQt 输入对话框,意外类型

编程入门 行业动态 更新时间:2024-10-10 17:22:28
本文介绍了PyQt 输入对话框,意外类型的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

这是我第一次使用 QInputDialog 并且我被这个例子困住了.问题是当我按下 EditButton 并尝试打开 QInputDialog 时.一个意外类型"错误随之而来:

It's the first time I use QInputDialog and I'm stuck with this example. The probem is when I press the EditButton and try to open a QInputDialog. An 'unexpected type' error comes out with it:

"TypeError: QInputDialog.getText(QWidget, str, str, QLineEdit.EchoMode echo=QLineEdit.Normal, str text=QString(), Qt.WindowFlags flags=0, Qt.InputMethodHints inputMethodHints=Qt.ImhNone) -> (str, bool): 参数 1 有意外类型 'Ui_Dia记录'"

"TypeError: QInputDialog.getText(QWidget, str, str, QLineEdit.EchoMode echo=QLine Edit.Normal, str text=QString(), Qt.WindowFlags flags=0, Qt.InputMethodHints inp utMethodHints=Qt.ImhNone) -> (str, bool): argument 1 has unexpected type 'Ui_Dia log'"

我正在遵循书中的一个示例,但它似乎不起作用.有人可以解释一下吗?

I'm following an example from a book but it seems not be working. Could someone explain it, please?

from PyQt5 import QtCore, QtGui, QtWidgets from PyQt5.QtWidgets import QInputDialog class Ui_Dialog(object): def Addlist(self): self.listWidget.addItem(self.lineEdit.text()) self.lineEdit.setText('') self.lineEdit.setFocus() def Editlist(self): row = self.listWidget.currentRow() newtext, ok = QInputDialog.getText(self, "Enter new text", "Enter new text") if ok and (len(newtext) !=0): self.listWidget.takeItem(self.listWidget.currentRow()) self.listWidget.insertItem(row, QListWidgetItem(newtext)) def Delete(self): self.listWidget.takeItem(self.listWidget.currentRow()) def Deleteall(self): self.listWidget.clear() def setupUi(self, Dialog): Dialog.setObjectName("Dialog") Dialog.resize(570, 318) self.label = QtWidgets.QLabel(Dialog) self.label.setGeometry(QtCore.QRect(30, 20, 101, 21)) self.label.setObjectName("label") self.lineEdit = QtWidgets.QLineEdit(Dialog) self.lineEdit.setGeometry(QtCore.QRect(130, 20, 113, 20)) self.lineEdit.setObjectName("lineEdit") self.AddButton = QtWidgets.QPushButton(Dialog) self.AddButton.setGeometry(QtCore.QRect(150, 80, 75, 23)) self.AddButton.setObjectName("AddButton") self.listWidget = QtWidgets.QListWidget(Dialog) self.listWidget.setGeometry(QtCore.QRect(290, 20, 256, 271)) self.listWidget.setObjectName("listWidget") self.EditButton = QtWidgets.QPushButton(Dialog) self.EditButton.setGeometry(QtCore.QRect(150, 120, 75, 23)) self.EditButton.setObjectName("EditButton") self.DeteleButton = QtWidgets.QPushButton(Dialog) self.DeteleButton.setGeometry(QtCore.QRect(150, 160, 75, 23)) self.DeteleButton.setObjectName("DeteleButton") self.DeleteAllButton = QtWidgets.QPushButton(Dialog) self.DeleteAllButton.setGeometry(QtCore.QRect(150, 200, 75, 23)) self.DeleteAllButton.setObjectName("DeleteAllButton") self.listWidget.addItem('Pizza') self.listWidget.addItem('Pasta') self.listWidget.addItem('Burrito') self.listWidget.addItem('Hamburger') self.AddButton.clicked.connect(self.Addlist) self.EditButton.clicked.connect(self.Editlist) self.DeteleButton.clicked.connect(self.Delete) self.DeleteAllButton.clicked.connect(self.Deleteall) self.retranslateUi(Dialog) QtCore.QMetaObject.connectSlotsByName(Dialog) def retranslateUi(self, Dialog): _translate = QtCore.QCoreApplication.translate Dialog.setWindowTitle(_translate("Dialog", "Dialog")) self.label.setText(_translate("Dialog", "Enter Text")) self.AddButton.setText(_translate("Dialog", "Add")) self.EditButton.setText(_translate("Dialog", "Edit")) self.DeteleButton.setText(_translate("Dialog", "Delete")) self.DeleteAllButton.setText(_translate("Dialog", "Delete All")) if __name__ == "__main__": import sys app = QtWidgets.QApplication(sys.argv) Dialog = QtWidgets.QDialog() ui = Ui_Dialog() ui.setupUi(Dialog) Dialog.show() sys.exit(app.exec_())

推荐答案

试试看:

from PyQt5 import QtCore, QtGui, QtWidgets from PyQt5.QtWidgets import QInputDialog, QWidget, QListWidgetItem # ++ class Ui_Dialog(QWidget): # - object + QWidget def Addlist(self): self.listWidget.addItem(self.lineEdit.text()) self.lineEdit.setText('') self.lineEdit.setFocus() def Editlist(self): row = self.listWidget.currentRow() newtext, ok = QInputDialog.getText(self, "Enter new text", "Enter new text") if ok and (len(newtext) !=0): self.listWidget.takeItem(self.listWidget.currentRow()) self.listWidget.insertItem(row, QListWidgetItem(newtext)) def Delete(self): self.listWidget.takeItem(self.listWidget.currentRow()) def Deleteall(self): self.listWidget.clear() def setupUi(self, Dialog): Dialog.setObjectName("Dialog") Dialog.resize(570, 318) self.label = QtWidgets.QLabel(Dialog) self.label.setGeometry(QtCore.QRect(30, 20, 101, 21)) self.label.setObjectName("label") self.lineEdit = QtWidgets.QLineEdit(Dialog) self.lineEdit.setGeometry(QtCore.QRect(130, 20, 113, 20)) self.lineEdit.setObjectName("lineEdit") self.AddButton = QtWidgets.QPushButton(Dialog) self.AddButton.setGeometry(QtCore.QRect(150, 80, 75, 23)) self.AddButton.setObjectName("AddButton") self.listWidget = QtWidgets.QListWidget(Dialog) self.listWidget.setGeometry(QtCore.QRect(290, 20, 256, 271)) self.listWidget.setObjectName("listWidget") self.EditButton = QtWidgets.QPushButton(Dialog) self.EditButton.setGeometry(QtCore.QRect(150, 120, 75, 23)) self.EditButton.setObjectName("EditButton") self.DeteleButton = QtWidgets.QPushButton(Dialog) self.DeteleButton.setGeometry(QtCore.QRect(150, 160, 75, 23)) self.DeteleButton.setObjectName("DeteleButton") self.DeleteAllButton = QtWidgets.QPushButton(Dialog) self.DeleteAllButton.setGeometry(QtCore.QRect(150, 200, 75, 23)) self.DeleteAllButton.setObjectName("DeleteAllButton") self.listWidget.addItem('Pizza') self.listWidget.addItem('Pasta') self.listWidget.addItem('Burrito') self.listWidget.addItem('Hamburger') self.AddButton.clicked.connect(self.Addlist) self.EditButton.clicked.connect(self.Editlist) self.DeteleButton.clicked.connect(self.Delete) self.DeleteAllButton.clicked.connect(self.Deleteall) self.retranslateUi(Dialog) QtCore.QMetaObject.connectSlotsByName(Dialog) def retranslateUi(self, Dialog): _translate = QtCore.QCoreApplication.translate Dialog.setWindowTitle(_translate("Dialog", "Dialog")) self.label.setText(_translate("Dialog", "Enter Text")) self.AddButton.setText(_translate("Dialog", "Add")) self.EditButton.setText(_translate("Dialog", "Edit")) self.DeteleButton.setText(_translate("Dialog", "Delete")) self.DeleteAllButton.setText(_translate("Dialog", "Delete All")) if __name__ == "__main__": import sys app = QtWidgets.QApplication(sys.argv) Dialog = QtWidgets.QDialog() ui = Ui_Dialog() ui.setupUi(Dialog) Dialog.show() sys.exit(app.exec_())

更多推荐

PyQt 输入对话框,意外类型

本文发布于:2023-11-28 03:49:36,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1640838.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:对话框   意外   类型   PyQt

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!