程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了当我在文本框中单击时,如何使 tkinter 突出显示书面文本大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决当我在文本框中单击时,如何使 tkinter 突出显示书面文本?

开发过程中遇到当我在文本框中单击时,如何使 tkinter 突出显示书面文本的问题如何解决?下面主要结合日常开发的经验,给出你关于当我在文本框中单击时,如何使 tkinter 突出显示书面文本的解决方法建议,希望对你解决当我在文本框中单击时,如何使 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,请注明来意。