python - pyqt qlabel仅显示字符串的第一个字符

标签 python python-2.7 pyqt pyqt4 qlabel

我想在单击按钮时在 QLabel 中显示一些字符串,但我的代码仅显示字符串的第一个字符。我为此使用以下代码

class UITesterWindow(QWidget):
    def __init__(self, parent=None):
        super(UITesterWindow, self).__init__(parent)

        self.test2 = QPushButton("Test1", self)
        self.test2.setGeometry(10, 360, 200, 30)
        self.test2.setStyleSheet("font: bold 12pt Courier")

        self.emailIDIN = QtGui.QLabel(self)
        self.emailIDIN.setStyleSheet("font: bold 18pt Courier") 
        self.emailIDIN.move(420, 170)

class SecondWindow(QMainWindow):
    def __init__(self, parent=None):
        super(SecondWindow, self).__init__(parent)
        self.setGeometry(50, 50, 400, 450)
        self.showMaximized()
        self.testerEvent()

    def testerEvent(self):
        self.SecondWindow = UITesterWindow(self)
        self.setCentralWidget(self.SecondWindow)

        self.SecondWindow.test2.clicked.connect(lambda: self.test3("data"))

        self.show()

    def test3(self, data):
        self.SecondWindow.emailIDIN.setText("hello")

在上面的代码中,我想将 qlable 设置为“hello”,但只显示“h”。这是什么原因?我该如何更正我的代码?

最佳答案

问题的产生是因为QLabel的大小最初取决于文本的内容,并且由于这个空最初只占用一个字母所需的宽度,解决方案是调用该方法adjustSize() .

def test3(self, data):
    self.SecondWindow.emailIDIN.setText("hello")
    self.SecondWindow.emailIDIN.adjustSize()

注意:不建议将变量命名为类,因为它可能会导致错误。

关于python - pyqt qlabel仅显示字符串的第一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47036326/

相关文章:

python - 追加元组的元组

python - 将线程添加到数独检查器

Python GUI 多处理并且仍然卡住

python - 如何定义将在 python 类中函数的每次迭代中使用的变量?

Python 子进程错误管理。无法捕获非零退出状态

Python 矩阵内积

python - 在 PyQt 中绘制多边形

python-2.7 - Python-docx设置文本方向RTL

python - 在函数内显示 PyQt 主窗口

python - 可以在白色文本上添加黑色边框吗?