代码是一个生成密码的程序,
easy是一个名字,
中间是一个名称+3个随机符号,
硬盘提供了选择密码长度的可能性,这是随机符号的复杂性
“开始框架”提供了英语和波尔斯基语之间的选择,
以下波兰语或英语框架给出了相同的可能性。不同的名字会有不同的难度
我正在学习Python GUI tkinter,遇到了一个问题,因为正如标题所说,我有一个小部件需要删除,方法是使用一个按钮“后退”,该按钮链接到另一个函数,该函数将在顶部显示“开始帧”,并删除由函数“easy”、“medium”创建的小部件,“困难”来自“英语难度”框架,因此有点“忘记进度”
您可能会发现一些类似的代码,但链接到另一个名称略有不同的函数,这是因为从开始帧可以选择语言-波兰语和英语。波兰语部分的代码有镜像
99行是我的try,def start\u frame\u del\u小部件 输出是(示例)“输入\文本未定义”,如何使函数看到它
import tkinter
import tkinter.ttk
from tkinter import *
import random
def convert(password):
pas = str("".join(map(str, password)))
return pas
imiona = ["Ada", "Adela", "Adelajda", "Adrianna", "Agata", "Agnieszka", "Aldona", "Aleksandra", "Alicja", "Alina", "Amanda", "Amelia", "Anastazja", "Andżelika", "Aneta", "Anita", "Anna", "AntoninaBarbara", "Beata", "Berenika", "Bernadeta", "Blanka", "Bogusława", "BożenaCecylia", "Celina", "CzesławaDagmara", "Danuta", "Daria", "Diana", "Dominika", "DorotaEdyta", "Eliza", "Elwira", "Elżbieta", "Emilia", "Eugenia", "Ewa", "EwelinaFelicja", "FranciszkaGabriela", "GrażynaHalina", "Hanna", "HelenaIga", "Ilona", "Irena", "Irmina", "Iwona", "IzabelaJadwiga", "Janina", "Joanna", "Jolanta", "Jowita", "Judyta", "Julia", "Julita", "JustynaKamila", "Karina", "Karolina", "Katarzyna", "Kazimiera", "Kinga", "Klaudia", "Kleopatra", "Kornelia", "KrystynaLaura", "Lena", "Leokadia", "Lidia", "Liliana", "Lucyna", "Ludmiła", "LuizaŁucjaMagdalena", "Maja", "Malwina", "Małgorzata", "Marcelina", "Maria", "Marianna", "Mariola", "Marlena", "Marta", "Martyna", "Marzanna", "Marzena", "Matylda", "Melania", "Michalina", "Milena", "Mirosława", "MonikaNadia", "Natalia", "Natasza", "Nikola", "Nina", "Olga", "Oliwia", "Otylia","Pamela", "Patrycja", "Paula", "PaulinaRegina", "Renata", "Roksana", "Róża", "RozaliaSabina", "Sandra", "Sara", "Sonia", "Stanisława", "Stefania", "Stella", "Sylwia"]
signs=["A","a","B","b","C","c","D","d","E","e","F","f","G","g","H","h","I","i","J","j","K","k","L","l","M","m","N","n","O","o","P","p","R","r","S","s","T","t","U","u","","w","Y","y","Z","z","0","1","2","3","4","5","6","7","8","9","!","@","$","%","^","&","*","(",")","#"]
########################### Dokonalem zmian w liniach 49, 63, 67, 121
#przyciski na startowej ramce
def start_frame_buttons():
start_wind_eng=tkinter.Button(start_frame, text="English", bg="blue", fg="white", command=dif_eng_fr)
start_wind_eng.grid(column=0, row=0, sticky=(tkinter.N))
start_wind_pl=tkinter.Button(start_frame, text="Polish", bg="red", fg="white", command=dif_pl_fr)
start_wind_pl.grid(column=1, row=0, sticky=(tkinter.N))
#przyciski trudnosci na english ramce
def difficulty_eng_frame_buttons():
eng_frame_easy=tkinter.Button(eng_difficulty_f2, text="Easy", bg="white", fg="blue", command=easy)
eng_frame_easy.grid(column=0, row=0, sticky=(tkinter.N))
eng_frame_medium=tkinter.Button(eng_difficulty_f2, text="Medium", bg="yellow", fg="black", command=medium)
eng_frame_medium.grid(column=2, row=0, sticky=(tkinter.N))
eng_frame_hard=tkinter.Button(eng_difficulty_f2, text="Hard", bg="black", fg="yellow", command=hard)
eng_frame_hard.grid(column=4, row=0, sticky=(tkinter.N))
start_frame_comeback=tkinter.Button(eng_difficulty_f2, text="back", bg="white", fg="black", command=start_fr)
start_frame_comeback.grid(column=4, row=3, sticky=(tkinter.N))
#przyciski trudnosci na polskiej ramce
def difficulty_pl_frame_buttons():
pl_frame_easy=tkinter.Button(pl_difficulty_f2, text="Łatwe", bg="white", fg="blue", command=easypl)
pl_frame_easy.grid(column=0, row=0, sticky=(tkinter.N))
pl_frame_medium=tkinter.Button(pl_difficulty_f2, text="Średnie", bg="yellow", fg="black", command=mediumpl)
pl_frame_medium.grid(column=2, row=0, sticky=(tkinter.N))
pl_frame_hard=tkinter.Button(pl_difficulty_f2, text="Trudne", bg="black", fg="yellow", command=hardpl)
pl_frame_hard.grid(column=4, row=0, sticky=(tkinter.N))
start_frame_comeback=tkinter.Button(pl_difficulty_f2, text="wstecz", bg="white", fg="black", command=start_fr)
start_frame_comeback.grid(column=4, row=3, sticky=(tkinter.N))
#latwe haslo
def easy():
pas= random.choice(imiona)
haslotxt=tkinter.ttk.Label(eng_difficulty_f2, text="PASSWORD:").grid(row=1, column=0)
LabelText.set(pas)#Ustawiam nowa wartosc StringVar'a "LabelText"
paslabele=tkinter.ttk.Label(eng_difficulty_f2, textvariable=LabelText).grid(row=1, column=2)#zamienilem "text",na "textvariable" w raz z nazwa "LabelText" tym sposobem przypisujesz z jakiego StringVar'a tekst ma sie wyswietlac
def easypl():
pas= random.choice(imiona)
haslotxt=tkinter.ttk.Label(pl_difficulty_f2, text="PASSWORD:").grid(row=1, column=0)
LabelTextpl.set(pas)#Ustawiam nowa wartosc StringVar'a "LabelText"
paslabele=tkinter.ttk.Label(pl_difficulty_f2, textvariable=LabelTextpl).grid(row=1, column=2)#zamienilem "text",na "textvariable" w raz z nazwa "LabelText" tym sposobem przypisujesz z jakiego StringVar'a tekst ma sie wyswietlac
#srednie haslo
def medium():
password = random.choice(imiona)
i=1
pas = ''
while i<=3:
sign = random.choice(signs)
i=i+1
pas = pas + sign
haslotxt=tkinter.ttk.Label(eng_difficulty_f2, text="PASSWORD:").grid(row=1, column=0)
LabelText.set(password+pas)#Ustawiam nowa wartosc StringVar'a "LabelText"
paslabelm=tkinter.ttk.Label(eng_difficulty_f2, textvariable=LabelText).grid(row=1, column=2)
def mediumpl():
password = random.choice(imiona)
i=1
pas = ''
while i<=3:
sign = random.choice(signs)
i=i+1
pas = pas + sign
haslotxt=tkinter.ttk.Label(pl_difficulty_f2, text="PASSWORD:").grid(row=1, column=0)
LabelTextpl.set(password+pas)#Ustawiam nowa wartosc StringVar'a "LabelText"
paslabelm=tkinter.ttk.Label(pl_difficulty_f2, textvariable=LabelTextpl).grid(row=1, column=2)
#trudne haslo
def hard():
input_text=tkinter.Entry(eng_difficulty_f2, textvariable=EntryText)
input_text.grid(column=0, row=3)
haslotxt=tkinter.ttk.Label(eng_difficulty_f2, text="PASSWORD:").grid(row=1, column=0)
paslabelm=tkinter.ttk.Label(eng_difficulty_f2, textvariable=LabelText).grid(row=1, column=2)
def hardpl():
input_text=tkinter.Entry(pl_difficulty_f2, textvariable=EntryTextpl)
input_text.grid(column=0, row=3)
tkinter.ttk.Label(pl_difficulty_f2, text="PASSWORD:").grid(row=1, column=0)
tkinter.ttk.Label(pl_difficulty_f2, textvariable=LabelTextpl).grid(row=1, column=2)
#wyswietla wybór języka oraz usuwa stworzone widgety z ramki
def start_fr_del_widget():
pl_difficulty_f2.grid_forget()
eng_difficulty_f2.grid_forget()
start_frame.grid(column=0, row=0, padx=20, pady=5, sticky=(tkinter.W, tkinter.N, tkinter.E))
input_text.grid_remove(eng_difficulty_f2)
haslotxt.grid_remove()
paslabelm.grid_remove()
#wyswietl ramke start
def start_fr():
# This function can only be called from the second window.
# Hide the second window and show the third window.
eng_difficulty_f2.grid_forget()
pl_difficulty_f2.grid_forget()
start_frame.grid(column=0, row=0, padx=20, pady=5, sticky=(tkinter.W, tkinter.N, tkinter.E))
#wyswietl english ramke
def dif_eng_fr():
# This function can only be called from the second window.
# Hide the second window and show the third window.
start_frame.grid_forget()
eng_difficulty_f2.grid(column=0, row=0, padx=20, pady=5, sticky=(tkinter.W, tkinter.N, tkinter.E))
#wyswietl polska ramka
def dif_pl_fr():
# This function can only be called from the second window.
# Hide the second window and show the third window.
start_frame.grid_forget()
pl_difficulty_f2.grid(column=0, row=0, padx=20, pady=5, sticky=(tkinter.W, tkinter.N, tkinter.E))
#STWORZENIE OKNA, WYMIARY, TITLE RESAZIBLE
wind=tkinter.Tk()
wind_wd=700
wind_ht=200
wind.title("Password Generator / Generator Hasła")
#tworzenie ramki start
start_frame=tkinter.ttk.Frame(wind, width=wind_wd, height=wind_ht)
start_frame['borderwidth'] = 2
start_frame['relief'] = 'sunken'
start_frame.grid(column=0, row=0, padx=20, pady=5, sticky=(tkinter.W, tkinter.N, tkinter.E))
#tworzenie ramki engielskiej
eng_difficulty_f2=tkinter.ttk.Frame(wind, width=wind_wd, height=wind_ht)
eng_difficulty_f2['borderwidth'] = 2
eng_difficulty_f2['relief'] = 'sunken'
eng_difficulty_f2.grid(column=0, row=0, padx=20, pady=5, sticky=(tkinter.W, tkinter.N, tkinter.E))
#tworzenie ramki polskiej
pl_difficulty_f2=tkinter.ttk.Frame(wind, width=wind_wd, height=wind_ht)
pl_difficulty_f2['borderwidth'] = 2
pl_difficulty_f2['relief'] = 'sunken'
pl_difficulty_f2.grid(column=0, row=0, padx=20, pady=5, sticky=(tkinter.W, tkinter.N, tkinter.E))
#### PO row=0 było " padx=20, pady=5, sticky=(tkinter.W, tkinter.N, tkinter.E)", ale redukcja
#Funkcja uruchamiana przy zmianie tekstu w input_text
def EntryChanged(a,b,c): #te parametry a b c sa tylko przez to ze funkcja crashowala bez nich
length=EntryText.get()
length = int(length)
l=0
password = []
while l<length:
sign = random.choice(signs)
i=l-1
password.insert(i, sign)
l=l+1
passhard=convert(password)
LabelText.set(passhard)
def EntryChangedpl(a,b,c): #te parametry a b c sa tylko przez to ze funkcja crashowala bez nich
lengthpl=EntryTextpl.get()
lengthpl = int(lengthpl)
k=0
password = []
while k<lengthpl:
sign = random.choice(signs)
i=k-1
password.insert(i, sign)
k=k+1
passhard=convert(password)
LabelTextpl.set(passhard)
#Zmienne globalne
EntryText = tkinter.StringVar() #StringVar to specjalny rodzaj stringa z tkinter, przy zmianie automatycznie aktualizuje tekst w labele'ach korzystajacych z niego
EntryText.set("")
EntryText.trace("w", EntryChanged) # StringVar'a mozna tez urzyc do sprawdzenia czy tekst zostal edytowany, "EntryChanged" to nazwa funkcji ktora zostanie uruchomiona po wykryciu zmiany w tekscie
LabelText = tkinter.StringVar()
LabelText.set("")
EntryTextpl = tkinter.StringVar() #StringVar to specjalny rodzaj stringa z tkinter, przy zmianie automatycznie aktualizuje tekst w labele'ach korzystajacych z niego
EntryTextpl.set("")
EntryTextpl.trace("w", EntryChangedpl) # StringVar'a mozna tez urzyc do sprawdzenia czy tekst zostal edytowany, "EntryChanged" to nazwa funkcji ktora zostanie uruchomiona po wykryciu zmiany w tekscie
LabelTextpl = tkinter.StringVar()
LabelTextpl.set("")
#TWORZENIE WIDGETÓW W RAMKACH
start_frame_buttons()
difficulty_eng_frame_buttons()
difficulty_pl_frame_buttons()
eng_difficulty_f2.grid_forget()
pl_difficulty_f2.grid_forget()
wind.mainloop()
我希望“后退”按钮转到“开始帧”(就像现在一样),当我再次按下“英语”时,它将只显示这3个难度按钮和“后退”按钮
目前没有回答
相关问题 更多 >
编程相关推荐