有人请帮我解决这个问题。
我在Tkinter Python中遇到以下问题。问题是文本与前一个文本重叠。和/或正在下面复制。
我尝试使用label.config(root).pack()
代替Label(root, text="").pack()
这有点解决了它开始在前一篇文章中写的问题,但是有两个问题。
1:文本旧文本/ Entrys仍然存在,它只是覆盖。
2:这只适用于label.config
,我也希望这可以使用按钮和Entrys(textbox)
我也尝试了.pack_forget()
和.destroy()
,但遗憾的是它没有做任何事情。
from tkinter import *
import pickle
import time
import os
def new_profile():
global Var1, Var2
var1 = StringVar()
var2 = StringVar()
Label(root, text="Create a new profile").pack()
Label(root, text="User Name").pack()
Entry(root, textvariable=var1).pack()
Label(root, text="Password").pack()
Entry(root, textvariable=var2).pack()
Button(root, text="Create", command=create_profile).pack()
Var1, Var2 = var1, var2
return
def create_profile():
text1 = Var1.get()
text2 = Var2.get()
print(text1)
dict = {}
dict['Name'] = text1
dict['Password'] = text2
pickle.dump(dict, open("test.txt", "wb"))
dict1 = pickle.load(open("test.txt", "rb"))
if dict1['Name'] == text1 and dict1['Password'] == text2:
Label(root, text="").pack()
Label(root, text="Profile creation successful", ).pack()
Label(root, text="Name:" + " " + text1).pack()
Label(root, text="Password:" + " " + text2).pack()
else:
Label(root, text="Something went wrong while creating your profile.", ).pack()
return
def load_profile():
select = "Load profile.."
label.config(text=select)
return
root = Tk()
root.geometry("500x400+300+300")
root.title("client")
menubar = Menu(root)
filemenu = Menu(menubar, tearoff=0)
filemenu.add_command(label="New Profile", command=new_profile)
filemenu.add_command(label="Load Profile", command=load_profile)
menubar.add_cascade(label="Profile Options", menu=filemenu)
root.config(menu=menubar)
label = Label(root)
label.pack()
root.mainloop()
答案 0 :(得分:0)
创建一个数组,例如
on_screen = []
在开始时然后命名您的小部件并将它们添加到数组
password_label = Label(root, text="Password").pack()
password = Entry(root, textvariable=var2).pack()
on_screen.append(password)
on_screen.append(password_label)
然后使用for循环来销毁数组中的所有小部件
for w in on_screen:
w.destroy()