[PyQt5]argument 1 has unexpected type ‘QPushButton‘ 怎么解决

在Qt编程中,作者在创建GUI时遇到了使用`addLayout`代替`addWidget`导致的错误。文章详细记录了这个问题,指出在布局管理中,`addLayout`用于添加子布局,而`addWidget`适用于添加控件。通过修正方法,成功解决了字体选择对话框的显示问题。作者提醒初学者注意类似方法的区别,以避免常见错误。
摘要由CSDN通过智能技术生成

为了练习字体选择对话框的使用,编写了一个练习代码,如下

class FontDialogDemo(QWidget):
    def __init__(self, parent=None):
        super(FontDialogDemo, self).__init__(parent)
        self.setWindowTitle("Font Dialog 例子")

        layout = QVBoxLayout()
        self.fontButoon = QPushButton("choose font")
        self.fontButoon.clicked.connect(self.getFont)
        layout.addLayout(self.fontButoon)

        self.fontLineEdit = QLabel("hello ,this is test program.")
        layout.addWidget(self.fontLineEdit)

        self.setLayout(layout)

    def getFont(self):
        font, ok = QFontDialog.getFont()
        if ok:
            self.fontLineEdit.setFont(font)

执行后,总是提示下面的错误:

TypeError: addLayout(self, QLayout, stretch: int = 0): argument 1 has unexpected type 'QPushButton'
 

折腾了好久,才发现是添加控件的方法用错了。上述代码使用了 【addLayout】,应该使用【addWidget】。在学习之初,经常会出现遇到这样相似的方法,一不小心就用错了。经验不足,不容易检查出来。

为了弄清楚这两个方法的区别,查到的资料为:

  • addLayout:用于在 布局中 插入子 布局
  • addWidget:用于在 布局中 插入 控件

上述代码想要在布局layout 内插入控件 fontButoon,所以使用 addWidget 才是对的。

--------------------------------------------------------------------------------------------

注:文章内容主要是记录学习过程中遇到的一些问题,以及解决方法。留个记录,同时分享给有需要的人。如有不足之处,欢迎指正,谢谢!  
 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值