大佬教程收集整理的这篇文章主要介绍了当我在文本框中单击时,如何使 tkinter 突出显示书面文本,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
这是我的代码。我正在创建一个密码管理器,但我想在文本框中包含示例电子邮件/密码,但是当用户单击文本框时,文本将突出显示或消失,有点像创建帐户时的网站。请你帮忙看看如何在 tkinter 上做到这一点。 (我不是专家所以请不要包含任何太高级的东西)
from tkinter import *
from tkinter import messageBox
from random import choice,randint,shuffle
import pyperclip
def generate_password():
letters = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z']
numbers = ['0','1','2','3','4','5','6','7','8','9']
symbols = ['!','#','$','%','&','(',')','*','+']
password_letters = [choice(letters) for _ in range(randint(8,10))]
password_symbols = [choice(symbols) for _ in range(randint(2,4))]
password_numbers = [choice(numbers) for _ in range(randint(2,4))]
password_List = password_letters + password_symbols + password_numbers
shuffle(password_List)
password = "".join(password_List)
password_entry.insert(0,password)
pyperclip.copy(password)
def save():
website = website_entry.get()
email = email_entry.get()
password = password_entry.get()
if len(websitE) == 0 or len(password) == 0:
messageBox.showinfo(title="Oops",message="Please make sure you haven't left any fIElds empty.")
else:
is_ok = messageBox.askokcancel(title=website,message=f"these are the details entered: \nEmail: {email} "
f"\npassword: {passworD} \nIs it ok to save?")
if is_ok:
with open("data.txt","a") as data_file:
data_file.write(f"{websitE} | {email} | {passworD}\n")
website_entry.delete(0,END)
password_entry.delete(0,END)
window = Tk()
window.title("password Manager")
window.config(padx=50,pady=50)
canvas = Canvas(height=200,wIDth=200)
logo_img = PhotoImage(file="logo.png")
canvas.create_image(100,100,image=logo_img)
canvas.grID(row=0,column=1)
# Labels
website_label = Label(text="Website:")
website_label.grID(row=1,column=0)
email_label = Label(text="Email/Username:")
email_label.grID(row=2,column=0)
password_label = Label(text="password:")
password_label.grID(row=3,column=0)
website_entry = Entry(wIDth=35)
website_entry.grID(row=1,column=1,columnspan=2)
website_entry.focus()
email_entry = Entry(wIDth=35)
email_entry.grID(row=2,columnspan=2)
email_entry.insert(0,"example@example.com")
password_entry = Entry(wIDth=21)
password_entry.grID(row=3,column=1)
generate_password_button = button(text="Generate password",command=generate_password)
generate_password_button.grID(row=3,column=2)
add_button = button(text="Add",wIDth=36,command=savE)
add_button.grID(row=4,columnspan=2)
window.mainloop()
这里的代码可以解决您的问题:
from tkinter import Tk,Entry
def in_pass(event):
event.widget.delete(0,'end')
event.widget.config(show='*')
def in_widget(event):
event.widget.delete(0,'end')
root = Tk()
entry1 = Entry(root)
entry1.insert(0,'sample')
entry1.pack()
entry1.bind('<FocusIn>',in_widget)
entry2 = Entry(root)
entry2.insert(0,'sample')
entry2.pack()
entry2.bind('<FocusIn>',in_pass)
root.mainloop()
所以基本上 .bind()
将一个事件绑定到一个小部件,因此当该事件被触发时,它会调用给定的函数。需要注意的是,它还返回一个变量,因此即使不使用(或使用 lambda x:
),给定的函数也应该有一个参数。
在 in_pass()
的情况下,它还设置小部件,以便在其中输入的所有内容都隐藏为星号,而 in_widget()
只是清除小部件。
用于选择您可以使用这个:
from tkinter import Tk,Entry
def in_widget(event):
event.widget.SELEct_range(0,in_widget)
root.mainloop()
以上是大佬教程为你收集整理的当我在文本框中单击时,如何使 tkinter 突出显示书面文本全部内容,希望文章能够帮你解决当我在文本框中单击时,如何使 tkinter 突出显示书面文本所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。