Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何为tkinter创建语言按钮?_Python_Tkinter - Fatal编程技术网

Python 如何为tkinter创建语言按钮?

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 =

我有一个Python程序,我在其中使用tkinter。我想要的是有一个按钮,通过它我可以在整个程序中更改其他按钮/标签等的语言

重新启动后,它不必能够保存首选项,尽管如果有办法,我希望它能保存它。也许它会附加一个.txt文件,打开后检查它,看看使用了什么语言等。请有人告诉我怎么做

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']