微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

wxPython“显示密码”眼睛按钮

如何解决wxPython“显示密码”眼睛按钮

pass_txt = wx.TextCtrl(self,style=wx.TE_PASSWORD | wx.TE_PROCESS_ENTER)

我用它来创建一个密码框,它在插入过程中显示黑点以隐藏密码。如果 CapsLock 处于活动状态,它还会显示一个向上的小箭头。

我需要的是在盒子内添加一个小眼睛之类的东西,按下时会显示密码。我该怎么做?

解决方法

正如其他人已经评论过的那样,最简单的方法是创建一个隐藏的 TextCtrl 并将其更改为密码小部件。

BoxSizer 在这些情况下非常有用。我给你留下一个非常简单的例子。

DB_URL

最后,我推荐使用 WxGlade 在 wxpython 中设计您的图形界面。

,

有点意思,所以这里是Dialog

import wx

class LoginDialog(wx.Dialog):
    """
    Login dialog
    """
    def __init__(self):
        wx.Dialog.__init__(self,None,title="Login")
        self.logged_in = False
        self.password_shown= False

        self.username = wx.TextCtrl(self,-1)     
        self.hidden_password = wx.TextCtrl(self,-1,style=wx.TE_PASSWORD)
        self.visible_password = wx.TextCtrl(self)
        self.visible_password.Hide()
        self.lock = wx.StaticBitmap(self,wx.Bitmap('lock.png'))
        self.login = wx.Button(self,"Login")

        self.password_sizer = wx.BoxSizer(wx.HORIZONTAL)
        self.password_sizer.Add(self.hidden_password,wx.ALL,5)
        self.password_sizer.Add(self.visible_password,5)
        self.password_sizer.Add(self.lock,5)

        mainsizer= wx.BoxSizer(wx.VERTICAL)
        mainsizer.Add(self.username,5)
        mainsizer.Add(self.password_sizer)
        mainsizer.Add(self.login,5)

        self.lock.Bind(wx.EVT_LEFT_DOWN,self.OnToggle)
        self.login.Bind(wx.EVT_BUTTON,self.OnLogin)

        self.username.SetToolTip("Username")
        self.hidden_password.SetToolTip("Input password")
        self.visible_password.SetToolTip("Input password")
        self.lock.SetToolTip("Lock/Unlock password\nFor test purposes the password is\npassword1")

        self.SetSizer(mainsizer)

    def OnToggle(self,event):
        self.hidden_password.Show(self.password_shown)
        self.visible_password.Show(not self.password_shown)
        if not self.password_shown:
            self.visible_password.SetValue(self.hidden_password.GetValue())
            self.visible_password.SetFocus()
        else:
            self.hidden_password.SetValue(self.visible_password.GetValue())
            self.hidden_password.SetFocus()
        self.hidden_password.GetParent().Layout()
        self.password_shown = not self.password_shown

    def OnLogin(self,event):
        '''
        Perform your username/password vetting here
        or return the username/password pair for processing
        '''
        stupid_password1 = "password1"
        user_password1 = self.hidden_password.GetValue()
        if user_password1 == stupid_password1:
            self.logged_in = True
            self.Close()
        else:
            wx.MessageBox('Login failed','Error',wx.OK | wx.ICON_ERROR)
            self.Close()

class MyPanel(wx.Panel):
    def __init__(self,parent):
        wx.Panel.__init__(self,parent)
        user_lbl = wx.StaticText(self,label="Log in Successfull")

class MainFrame(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self,title="Main App")
        panel = MyPanel(self)
        # Ask user to login
        dlg = LoginDialog()
        dlg.ShowModal()
        authenticated = dlg.logged_in
        dlg.Destroy()
        if not authenticated:
            wx.MessageBox('Login failed',wx.OK | wx.ICON_ERROR)
            self.Destroy()
        self.Show()

if __name__ == "__main__":
    app = wx.App()
    frame = MainFrame()
    app.MainLoop()

锁定图片 - 'The lock image png file'

enter image description hereenter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。