为了练习字体选择对话框的使用,编写了一个练习代码,如下
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 才是对的。
--------------------------------------------------------------------------------------------
注:文章内容主要是记录学习过程中遇到的一些问题,以及解决方法。留个记录,同时分享给有需要的人。如有不足之处,欢迎指正,谢谢!