wxPython:当密码账号输入正确,登录界面消失并显示主界面

python 同时被 2 个专栏收录
11 篇文章 0 订阅
12 篇文章 0 订阅

登录界面弹窗(LoginDialog 类)如下:

在这里插入图片描述

登录界面弹窗(LoginDialog 类)代码如下:

import wx

class LoginDialog(wx.Dialog):
    def __init__(self, parent=None, compulsory_login_flag=True):
        super(LoginDialog, self).__init__(parent, -1, title='Login to UATP',
                                          style=wx.DEFAULT_DIALOG_STYLE)
        self._compulsory_login_flag = compulsory_login_flag
        self.user_info = None
        self.InitUI()
        self.ShowModal()

    def InitUI(self):
        user_list = ['A user', 'B user']
        # 操作组件
        self.input_name = wx.ComboBox(self, choices=user_list)
        self.input_pass = wx.TextCtrl(self, style=wx.TE_PASSWORD)
        self.btn_1a = wx.Button(self, label='Login', size=(7, 35))
        # 装饰组件
        label_name = wx.StaticText(self, label='Username')
        label_pass = wx.StaticText(self, label='Password')
        panel_black = wx.Panel(self, size=(7, 15))
        panel_black.SetBackgroundColour(wx.Colour('#474747'))
        panel_red = wx.Panel(self, size=(7, 30))
        panel_red.SetBackgroundColour(wx.Colour('#bf0006'))
        # 布局组件
        fgs_2 = wx.FlexGridSizer(rows=2, cols=2, vgap=8, hgap=10)
        fgs_2.AddMany([
            (label_name), (self.input_name, 1, wx.EXPAND),
            (label_pass), (self.input_pass, 1, wx.EXPAND)
        ])
        fgs_2.AddGrowableCol(1)
        fgs_1 = wx.FlexGridSizer(rows=4, cols=1, vgap=0, hgap=0)
        fgs_1.AddMany([
            (panel_red, 1, wx.EXPAND),
            (fgs_2, 1, wx.EXPAND | wx.TOP | wx.LEFT | wx.RIGHT, 15),
            (self.btn_1a, 1, wx.EXPAND | wx.ALL, 15),
            (panel_black, 1, wx.EXPAND)
        ])
        fgs_1.AddGrowableCol(0)
        fgs_1.AddGrowableRow(0, 2)
        fgs_1.AddGrowableRow(3, 1)
        # 窗口组件
        self.SetSizer(fgs_1)
        self.Center()
        self.Bind(wx.EVT_CLOSE, self._handle_before_close_dialog)

    def _handle_before_close_dialog(self, e):
        if self._compulsory_login_flag:
            wx.Exit()
        else:
            self.user_info = {'name': 'A user', 'age': 18}
            self.Destroy()

登录界面弹窗(LoginDialog 类)的调用方法:

import wx
from ui.login_dialog import LoginDialog


class MainFrame(wx.Frame):
    def __init__(self, *args, **kw):
        # 确保父级的 __init__ 被调用
        super(MainFrame, self).__init__(*args, **kw)
        pnl = wx.Panel(self)  # 主面板
        …………
        login = LoginDialog(compulsory_login_flag=False)
        print(login.user_info)
		…………

只需要在主窗口启动之前调用 LoginDialog 类,就能在主界面显示之前,先打开登录窗口,然后在 LoginDialog 类的 _handle_before_close_dialog 方法中,根据 _compulsory_login_flag(强制登录标识) 类属性的值,判断是否允许用户跳过登录。

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

打赏
文章很值,打赏犒劳作者一下
相关推荐
©️2020 CSDN 皮肤主题: 酷酷鲨 设计师:CSDN官方博客 返回首页

打赏

何小有

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值