代码之家  ›  专栏  ›  技术社区  ›  prattom

pyqt qlabel只显示字符串的第一个字符

  •  1
  • prattom  · 技术社区  · 7 年前

    我想在点击按钮时在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”。原因是什么?我如何更正代码?

    1 回复  |  直到 6 年前
        1
  •  2
  •   eyllanesc Yonghwan Shin    7 年前

    问题的原因是 QLabel 最初取决于文本的内容,并且由于此空值最初仅占用字母所需的宽度,因此解决方案是调用该方法 adjustSize() .

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

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