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.