一开始源代码如下:
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
#Qmessagebox
# class MessageBox(QMainWindow):
# def __init__(self, parent=None):
# super(MessageBox, self).__init__(parent)
# self.setWindowTitle("QDialog Demo")
# self.resize(350,300)
#
# self.btn = QPushButton(self)
# self.btn.setText("弹出对话框")
# self.btn.clicked.connect(self.showmsg1)
#
# def showmsg1(self):
# message = QMessageBox.critical(self,"messagebox","确认窗口",QMessageBox.Ok | QMessageBox.Cancel,QMessageBox.Ok)
#
#
# if __name__ == "__main__":
# app = QApplication(sys.argv)
# box = MessageBox()
# box.show()
# sys.exit(app.exec_())
class InputDialog(QMainWindow):
def __init__(self, parent=None):
super(InputDialog, self).__init__(parent)
self.setWindowTitle("InputDialog Demo")
layout = QFormLayout()
self.btn1 = QPushButton("获取列表中的选项")
self.btn1.clicked.connect(self.getItem)
self.lb1 = QLineEdit()
layout.addRow(self.btn1,self.lb1)
self.btn2 = QPushButton("获得字符串")
self.btn2.clicked.connect(self.getText)
self.lb2 = QLineEdit()
layout.addRow(self.btn2,self.lb2)
self.btn3 = QPushButton("获得整数")
self.btn3.clicked.connect(self.getInt)
self.lb3 = QLineEdit()
layout.addRow(self.btn3,self.lb3)
self.setLayout(layout)
def getItem(self):
items = {"C","c++","JAVA",'Python'}
item , ok = QInputDialog.getItem(self,"select inputdialog","列表",items,0,False)
if ok and item:
self.lb1.setText(item)
def getText(self):
text , ok = QInputDialog.getText(self,"Text inputdialog","输入姓名")
if ok:
self.lb2.setText(str(text))
def getInt(self):
num , ok = QInputDialog.getInt(self,"Int inputdialog","输入整数")
if ok:
self.lb2.setText(str(num))
if __name__ == "__main__":
app = QApplication(sys.argv)
box = InputDialog()
box.show()
sys.exit(app.exec_())
网上找了半天也没有找到解决办法,然后灵机一动,发现类中继承的东西好像不太对,然后我尝试改成了QWidget,果然可行。虽然不知道因为什么,但是总算问题解决了。
有大佬知道为啥的话希望可以给我留言。