Skip to content Skip to sidebar Skip to footer

Pyqt: Modifying Widget Object From Another Function

I am making Multi-Page application in PyQt4, so whenever user does specific action (clicking a button for example) there is an update in widgets. For example, There are 5 widgets

Solution 1:

You need to store references to the subwidgets on the main window using self

deffunc(self):
    self.btn = QPushButton(...)
    ...

defother_func(self):
    self.btn.setText('Hello')

Solution 2:

I've edited your code. I believe this will do the job. Just push the button, and see the label disappear. Have fun :-)

import sys
from PyQt4 import QtGui, QtCore

classWindow(QtGui.QMainWindow):

    def__init__(self):
        super(Window, self).__init__()
        self.setGeometry(40, 80, 1280, 800)

        # You should make a 'mainWidget' that# serves as a container for all your other# widgets.
        self.mainWidget = QtGui.QWidget()
        self.setCentralWidget(self.mainWidget)

        self.setWindowTitle("E.S Quiz")
        self.home()
        self.show()


    defhome(self):
        # Make the label
        pic = QtGui.QLabel(parent = self.mainWidget)
        pic.setText("My label")
        pic.setGeometry(0, 0, 1280, 800)
        #pic.setPixmap(QtGui.QPixmap(":/images/background.png"))# Make a label that will disappear when# you push the button.
        self.myLabel = QtGui.QLabel(parent = self.mainWidget)
        self.myLabel.setText("My removable label")
        self.myLabel.setGeometry(40,40,200,100)


        # Make the button
        self.btn = QtGui.QPushButton(parent = self.mainWidget)
        self.btn.setCheckable(True)
        self.btn.setText("My button")
        self.btn.resize(150, 120)
        self.btn.move(600, 400)
        self.btn.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
        self.btn.setObjectName('btn')
#        self.btn.setStyleSheet("#btn {background-image: url(':/images/Button1.png'); border: none; }"#        "#btn:hover { background-image: url(':/images/Button1Hover.png'); }"#        "#btn:pressed { background-image: url(':/images/Button1Press.png'); }")
        self.btn.clicked.connect(self.btnAction)



    defbtnAction(self, pressed):
        print("Button pushed")
        if(pressed):
            self.myLabel.setVisible(False)
        else:
            self.myLabel.setVisible(True)





defstartup():
    app = QtGui.QApplication(sys.argv)
    GUI = Window()
    sys.exit(app.exec_())

startup()

Post a Comment for "Pyqt: Modifying Widget Object From Another Function"