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

一开始源代码如下:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值