Closed. This question is off-topic。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
                        
                        6年前关闭。
                                                                                            
                
        
我打算创建一个程序来执行以下操作:


询问用户名/密码
根据登录页面上的用户名,将为用户提供2个不同的GUI。也就是说,如果用户名在我的管理员列表中,则将向用户显示管理页面。如果用户名在普通用户列表中,则会向用户显示其他相关页面。
对于administratoruser界面,都会有一个带有几个工具按钮的工具栏,它们将创建一个新的对话框窗口。


目前,我拥有的程序结构是这样的单个类:

class MainWindow(QtGui.QMainWindow):
    def__init__(self,parent=None):
        ------

    def ShowLoginPage(self):
        #this is the code to create login page GUI
        ----
        ----
        button.clicked.connect(self.Process_login) # Submit button for username/password

    def ShowAdminPage(self):
        #this is the code to create admin page GUI
        ----
        ----

    def ShowUserPage(self):
        #this is the code to create user page GUI
        ----
        ----

    def Process_login(self):
        #this is the code to check if username is admin or user
        if username in username_list:
             self.ShowUserPage()
        elif username in adminname_list:
             self.ShowAdminPage()


实际上,ShowAdminPageShowUserPage方法都只是创建两个不同的Central Widgets并进行设置。

我的问题是。


是否可以改善上述结构?就我个人而言,我真的不认为将所有内容都放在一个这样的类中是一个好主意。但是我是一个初学者,我不知道我可以使用哪种替代方式来创建它。
构建这样的多页GUI程序时应遵循哪些良好实践?

最佳答案

此代码对该功能很有用,但不要为admin和普通用户创建centralWidget,只需使用QStackedWidget。您可以在QtDesigner中设计QStackedWidget并根据登录的用户以及从普通用户切换为普通用户以及从普通用户切换为admin用户时从QStackedWidget中显示适当的Widget,只需在QStackedWidget中切换小部件即可。

10-08 00:37