Python PyQt程序结构

时间:2013-12-04 05:41:22

标签: python class pyqt

我计划创建一个能够执行以下操作的程序:

  • 询问用户名/密码
  • 根据登录页面上的用户名,将向用户显示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并设置它们。

我的问题是。

  1. 上述结构是否可以改进?就个人而言,我并不认为将所有内容都放在这样的单个类中是个好主意。但我是一个初学者,我不知道我可以使用什么样的替代方式来创建它。
  2. 在构建像这样的多页面GUI程序时要遵循哪些好的做法?

2 个答案:

答案 0 :(得分:1)

此代码适用于此功能,但不为admin和普通用户创建centralWidgets,只需使用QStackedWidget即可。您可以在QtDesigner中设计QStackedWidget,并根据登录的用户以及用户从admin切换到普通用户以及从普通用户切换到admin用户,从QStackedWidget显示相应的Widget,只需切换{{1}中的小部件即可}。

答案 1 :(得分:0)

我在其他模块(作为静态函数)中创建ShowLoginPage(self)等函数,并将self命名为mainwindow。这样,我有很多模块因功能而异。