【问题标题】:how to hide password input on placeholder entry in python tkinter如何在python tkinter中的占位符条目上隐藏密码输入
【发布时间】:2020-09-30 22:58:25
【问题描述】:

我想要一个由以下代码完成的占位符条目。但我需要对用户隐藏的输入密码(可能是星号的形式。)

from tkinter import *

root=Tk()
root.geometry("300x200+600+250")
root.config(background="#E0FFFF")
root.resizable(False,False)


def userText(event):
    e1.delete(0,END)
    usercheck=True

def passText(event):
    e2.delete(0, END)
    passcheck=True



a=StringVar()
b=StringVar()
usercheck=False
passcheck=False


Label(root,text="User name",bg="#E0FFFF").place(x=20,y=50)
e1= Entry(root,textvariable=a)
e1.place(x=100,y=50)
e1.insert(0,"Enter username")
e1.bind("<Button>",userText)

Label(root,text="Password",bg="#E0FFFF").place(x=20,y=95)
e2= Entry(root,textvariable=b)
e2.place(x=100,y=95)
e2.insert(0,"Enter password")
e2.bind("<Button>",passText)


root.mainloop()

【问题讨论】:

  • 感谢您的回复。但这不是我想要的。我也想要一个占位符,它应该对用户可见,但是当用户点击输入密码的条目时,输入(密码)应该以星号的形式
  • 不是我想要的:你想显示"Enter password",它在开始输入时消失然后显示星号?
  • 密码输入获得焦点时可以设置show="*"
  • @Super 这能回答你的问题吗? [How to add placeholder to an Entry in tkinter? 将它与第一个评论链接的答案结合起来。

标签: python tkinter passwords hide


【解决方案1】:

扩展的tkinter.Entry 显示占位符文本,* 显示密码条目。


import tkinter as tk


class Entry(tk.Entry):
    def __init__(self, master, placeholder):
        super().__init__(master)

        self.placeholder = placeholder
        self._is_password = True if placeholder == "password" else False

        self.bind("<FocusIn>", self.on_focus_in)
        self.bind("<FocusOut>", self.on_focus_out)

        self._state = 'placeholder'
        self.insert(0, self.placeholder)

    def on_focus_in(self, event):
        if self._is_password:
          self.configure(show='*')

        if self._state == 'placeholder':
            self._state = ''
            self.delete('0', 'end')

    def on_focus_out(self, event):
        if not self.get():
          if self._is_password:
            self.configure(show='')

          self._state = 'placeholder'
          self.insert(0, self.placeholder)

用法:

if __name__ == "__main__": 
    root = tk.Tk() 

    username = Entry(root, "username")
    username.pack()

    password = Entry(root, "password")
    password.pack()  

    root.mainloop()

【讨论】:

    猜你喜欢
    • 2012-06-14
    • 2012-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-13
    • 2017-01-23
    • 1970-01-01
    • 2017-08-01
    相关资源
    最近更新 更多