如何在PyQt5中按下按钮时创建新的小部件

时间:2017-08-03 18:56:08

标签: python button widget pyqt5

我是PyQt5的新手,我正在制作一个简单的程序,用户首先会看到两个按钮的选择,当他们按下一个应该将它们带到一个新的屏幕时,当他们按下另一个按钮它应该采取它们到不同的屏幕。按下按钮时,我无法打开新小部件。我尝试这样做的方法是通过创建一个创建窗口小部件的功能,当用户按下按钮时运行此功能,但当前窗口小部件不是由该功能创建的。

这是我的代码。

def StudentLog():
    class StudentLogin(QWidget):
        def __init__(self):
            super().__init__()
            self.initUI()

        def initUI(self):
            self.setGeometry(300, 300, 300, 200)
            self.setWindowTitle('Student log in screen')    
            self.show()


class Login(QWidget):

    def __init__(self):
        super().__init__()
        self.initUI()        

    def initUI(self):

        QToolTip.setFont(QFont('SansSerif', 10))       
        self.setToolTip('Login screen')
        btn = QPushButton('Student Login', self)
        btn.setToolTip('This will log you in as a student')
        btn.move(10, 50)  
        btn.clicked.connect(StudentLog)

        self.setGeometry(300, 300, 300, 200)
        self.setWindowTitle('Log in screen')    
        self.show()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Login()
    sys.exit(app.exec_())

1 个答案:

答案 0 :(得分:0)

这里的问题是你只在函数StudentLog()中声明一个类,然后你永远不会创建这个类的实例。

我建议在类Login中移动此函数,以创建一个方法,您可以轻松调用以创建此实例,并且优点是您可以使用{跟踪新​​窗口小部件{1}}:

self.