简体   繁体   中英

pyqt qlabel displays only first char of string

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?

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.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM