PYQT5学习之遇坑与排坑(2)QFormLayout 布局中按钮无法显示

tech2022-09-17  102

一开始源代码如下:

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,果然可行。虽然不知道因为什么,但是总算问题解决了。 有大佬知道为啥的话希望可以给我留言。

最新回复(0)