Python 如何为tkinter创建语言按钮?
我有一个Python程序,我在其中使用tkinter。我想要的是有一个按钮,通过它我可以在整个程序中更改其他按钮/标签等的语言 重新启动后,它不必能够保存首选项,尽管如果有办法,我希望它能保存它。也许它会附加一个.txt文件,打开后检查它,看看使用了什么语言等。请有人告诉我怎么做Python 如何为tkinter创建语言按钮?,python,tkinter,Python,Tkinter,我有一个Python程序,我在其中使用tkinter。我想要的是有一个按钮,通过它我可以在整个程序中更改其他按钮/标签等的语言 重新启动后,它不必能够保存首选项,尽管如果有办法,我希望它能保存它。也许它会附加一个.txt文件,打开后检查它,看看使用了什么语言等。请有人告诉我怎么做 import hashlib import requests from tkinter import * import os import sys import string import random root =
import hashlib
import requests
from tkinter import *
import os
import sys
import string
import random
root = Tk()
# root.config(bg="red")
root.option_add('*Font', 'Arial')
root.state("zoomed")
root.bind("<F11>", lambda event: root.attributes("-fullscreen", not root.attributes("-fullscreen")))
root.bind("<Escape>", lambda event: root.attributes("-fullscreen", False))
def restart():
python = sys.executable
os.execl(python, python, * sys.argv)
def invalid_password():
error_password = Label(root, text="\n\nPlease enter a valid password")
error_password.pack(padx=5, pady=5)
restart_button = Button(root, text="Try another password", command=restart)
restart_button.pack(padx=5, pady=5)
root.bind('<Return>', lambda event=None: restart_button.invoke())
def error():
error_message = Label(root, text="\n\nThere happened some kind of error, please try again")
error_message.pack(padx=5, pady=5)
def compute(password):
encoded_str = password.encode()
hash_obj = hashlib.sha1(encoded_str)
hashed = hash_obj.hexdigest().upper()
beginning = hashed[:5]
ending = hashed[5:].strip()
response = requests.get("https://api.pwnedpasswords.com/range/" + beginning)
output = response.text
listing = output.split()
return listing, ending
def feedback(password, listing, ending):
compute(password)
for line in listing:
if ending in line:
num = line.split(':')[1]
warning_label = Label(root, text="\n\nYour password is not safe.\n"
"It is found to have been part of " + num +
" breaches! Change it now!")
warning_label.pack(pady=5)
restart_button = Button(root, text="Try another password", command=restart)
restart_button.pack(padx=5, pady=5)
root.bind('<Return>', lambda event=None: restart_button.invoke())
suggest_button_random = Button(root,
text="Suggest a safe password of random characters. It will automatically"
" be copied to your clipboard!", command=alfa_suggest)
suggest_button_random.pack(padx=5, pady=5)
suggest_button_word = Button(root, text="Suggest a safe password of random words. It will automatically"
" be copied to your clipboard!", command=beta_suggest)
suggest_button_word.pack(padx=5, pady=5)
break
else:
congratulating_label = Label(root, text="\n\nYour password seems to be safe")
congratulating_label.pack(pady=5)
restart_button = Button(root, text="Try another password", command=restart)
restart_button.pack(padx=5, pady=5)
root.bind('<Return>', lambda event=None: restart_button.invoke())
def alfa_suggest():
chosen_option = 1
check_suggest(chosen_option)
def beta_suggest():
chosen_option = 2
check_suggest(chosen_option)
def suggest_random():
p1 = "."
p2 = ","
p3 = "-"
p4 = "_"
p5 = "*"
p6 = "!"
p7 = "@"
p8 = "£"
p9 = "$"
p10 = "="
p11 = "?"
suggestion = ''.join(random.SystemRandom().choice(string.ascii_letters + string.digits + p1 + p2 + p3 + p4
+ p5 + p6 + p7 + p8 + p9 + p10 + p11) for _ in range(15))
password = suggestion
return password
def check_suggest(chosen_option):
if chosen_option == 1:
password = suggest_random()
else:
a = random.randint(1, 2)
if a == 1:
first = random.choice(open('lowercase.txt').readlines()).strip()
else:
first = random.choice(open('uppercase.txt').readlines()).strip()
a = random.randint(2, 3)
if a == 2:
second = random.choice(open('lowercase.txt').readlines()).strip()
else:
second = random.choice(open('uppercase.txt').readlines()).strip()
password = first + "_" + second
listing, ending = compute(password)
for line in listing:
if ending in line:
check_suggest(chosen_option)
break
else:
password_suggestion = Label(root, text=password)
password_suggestion.pack(padx=10, pady=5)
command = 'echo ' + password.strip() + '| clip'
os.system(command)
def confirm_password_and_compute():
password = e.get()
intro.destroy()
e.destroy()
confirm_password_button.destroy()
if password == "" or password.isspace():
invalid_password()
else:
listing, ending = compute(password)
feedback(password, listing, ending)
intro = Label(root, text="\n\nThis program checks for pwned passwords!\n"
"To check your current password against leaks, enter it here:")
intro.pack(padx=5, pady=5)
e = Entry(root, width=40)
e.pack()
confirm_password_button = Button(root, text="Confirm password", command=confirm_password_and_compute)
confirm_password_button.pack(padx=10, pady=10)
root.bind('<Return>', lambda event=None: confirm_password_button.invoke())
root.mainloop()
导入hashlib
导入请求
从tkinter进口*
导入操作系统
导入系统
导入字符串
随机输入
root=Tk()
#root.config(bg=“红色”)
root.option\u add('*Font',Arial')
root.state(“缩放”)
root.bind(“,lambda事件:root.attributes(“-fullscreen”,而不是root.attributes(“-fullscreen”))
root.bind(“,lambda事件:root.attributes(“-fullscreen”,False))
def restart():
python=sys.exe
execl(python,python,*sys.argv)
def无效的_密码():
错误\u password=Label(root,text=“\n\n请输入有效密码”)
密码包错误(padx=5,pady=5)
重启按钮=按钮(root,text=“尝试另一个密码”,command=restart)
重新启动按钮组(padx=5,pady=5)
root.bind(“”,lambda event=None:restart_button.invoke())
def error():
错误\u message=Label(root,text=“\n\n发生了某种错误,请重试”)
错误消息包(padx=5,pady=5)
def计算(密码):
encoded_str=password.encode()
hash_obj=hashlib.sha1(编码的_str)
hashed=hash_obj.hexdigest().upper()
开始=散列[:5]
ending=散列[5:][.strip()
响应=请求。获取(“https://api.pwnedpasswords.com/range/“+开始)
输出=response.text
listing=output.split()
返回列表,结束
def反馈(密码、列表、结束):
计算(密码)
对于列表中的行:
如果以行结尾:
num=line.split(“:”)[1]
警告\u label=label(root,text=“\n\n您的密码不安全。\n”
“发现它是”+num的一部分+
“违规!现在就改!”
警告标签包装(pady=5)
重启按钮=按钮(root,text=“尝试另一个密码”,command=restart)
重新启动按钮组(padx=5,pady=5)
root.bind(“”,lambda event=None:restart_button.invoke())
建议按钮\u随机=按钮(根,
text=“建议随机字符的安全密码。它将自动”
“被复制到剪贴板!”,命令=alfa_建议)
建议按钮随机包装(padx=5,pady=5)
建议\u按钮\u单词=按钮(root,text=“建议随机单词的安全密码。它将自动”
“复制到剪贴板!”,命令=beta\u建议)
建议按钮单词包(padx=5,pady=5)
打破
其他:
祝贺\u label=label(root,text=“\n\n您的密码似乎是安全的”)
祝贺标签包(pady=5)
重启按钮=按钮(root,text=“尝试另一个密码”,command=restart)
重新启动按钮组(padx=5,pady=5)
root.bind(“”,lambda event=None:restart_button.invoke())
def alfa_suggest():
所选选项=1
勾选建议(选中选项)
def beta_suggest():
所选选项=2
勾选建议(选中选项)
def suggest_random():
p1=“”
p2=“,”
p3=“-”
p4=“389;”
p5=“*”
p6=“!”
p7=“@”
p8.“£”
p9=“$”
p10=“=”
p11=“?”
suggestion=''.join(random.SystemRandom().choice(string.ascii_字母+string.digits+p1+p2+p3+p4
+p5+p6+p7+p8+p9+p10+p11)用于范围(15))
密码=建议
返回密码
def检查建议(所选选项):
如果选择了_选项==1:
password=suggest_random()
其他:
a=random.randint(1,2)
如果a==1:
first=random.choice(open('lowercase.txt').readlines()).strip()
其他:
first=random.choice(open('uppercase.txt').readlines()).strip()
a=随机的随机数(2,3)
如果a==2:
second=random.choice(open('lowercase.txt').readlines()).strip()
其他:
second=random.choice(open('uppercase.txt').readlines()).strip()
密码=第一次+第二次
清单,结束=compute(密码)
对于列表中的行:
如果以行结尾:
勾选建议(选中选项)
打破
其他:
密码\u建议=标签(根,文本=密码)
密码建议包(padx=10,pady=5)
command='echo'+password.strip()+'| clip'
操作系统(命令)
def确认密码和计算()
password=e.get()
介绍销毁()
e、 销毁
确认密码按钮。销毁()
如果password==“”或password.isspace():
无效的密码()
其他:
清单,结束=compute(密码)
反馈(密码、列表、结束)
intro=Label(root,text=“\n\n此程序检查密码!\n”
“若要检查当前密码是否泄漏,请在此处输入:”)
简介包(padx=5,pady=5)
e=入口(根,宽度=40)
e、 包()
确认密码按钮=按钮(root,text=“确认密码”,command=确认密码和计算)
确认密码按钮包(padx=10,pady=10)
root.bind(“”,lambda event=None:confirm\u password\u button.invoke())
root.mainloop()
非常凌乱,但在这里它仍然是一个.txt文件将非常有用。 我会尝试创建一个,然后向它写入如下内容: 行='早上好!?!?!你好 哪里
或任何其他分隔符元素将是您的分隔符。这样就可以得到“好”的文本
text_in_french = line.split('!?!?!')[1]
dict = {'English': 'Good Morning', 'French': 'Bonjour'}
text_in_french = dict['French']