pyqt qlabel displays only first char of string

匆匆过客 提交于 2019-12-02 12:17:55

问题


I want to display some string in QLabel on button click but my code only shows first char of the string. I am using following code for this

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")

In above code I want to set qlable as "hello" but only 'h' is displayed. What is the reason for this and how can I correct my code?


回答1:


The problem is caused because the size of the QLabel initially depends on the content of the text, and since this empty initially only takes the necessary width for a letter, the solution is to call the method adjustSize().

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

Note: It is not advisable to have a variable that is named as a class since it can cause errors.



来源:https://stackoverflow.com/questions/47036326/pyqt-qlabel-displays-only-first-char-of-string

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!