问题描述
我正在尝试在tkinter的窗口中添加很多文本,我希望它们排成一行。我能以比我正在做的事情更简单的方式来执行此操作,因为每次添加标签并更改行都非常烦人。 (“ bingbong”只是一个例子,我将连续使用不同的密码代替这些bingbong。)
from tkinter import *
from functools import partial
def validateLogin(password):
print(password.get())
if password.get() == "test":
newWindow = Tk()
newWindow.geometry('1800x800')
newWindow.title("Passwords")
tkWindow.destroy()
Label(newWindow,text="bingbong").grid(row=1,column=0)
Label(newWindow,text="bingbong").grid(row=2,text="bingbong").grid(row=3,text="bingbong").grid(row=4,text="bingbong").grid(row=5,text="bingbong").grid(row=6,text="bingbong").grid(row=7,text="bingbong").grid(row=8,column=0)
if password.get() != "test":
Label(tkWindow,text="Wrong password!",fg='red').grid(row=5,column=2)
#window
tkWindow = Tk()
tkWindow.geometry('250x100')
tkWindow.title('Passwords')
#password label and password entry Box
passwordLabel = Label(tkWindow,text="Password").grid(row=1,column=0)
password = StringVar()
passwordEntry = Entry(tkWindow,textvariable=password,show='*').grid(row=1,column=2)
validateLogin = partial(validateLogin,password)
#login button
loginButton = Button(tkWindow,text="Login",command=validateLogin).grid(row=4,column=2)
tkWindow.mainloop()
解决方法
使用循环创建它们,而不是一次手动创建
from tkinter import *
from functools import partial
words = ["foo","bar","baz","bingbong","foobar","foobaz","foofoo","barbar"]
def validateLogin(password):
print(password.get())
if password.get() == "test":
newWindow = Tk()
newWindow.geometry('1800x800')
newWindow.title("Passwords")
tkWindow.destroy()
for index,word in enumerate(words):
Label(newWindow,text=word).grid(row=index,column=0)
if password.get() != "test":
Label(tkWindow,text="Wrong password!",fg='red').grid(row=5,column=2)
#window
tkWindow = Tk()
tkWindow.geometry('250x100')
tkWindow.title('Passwords')
#password label and password entry box
passwordLabel = Label(tkWindow,text="Password").grid(row=1,column=0)
password = StringVar()
passwordEntry = Entry(tkWindow,textvariable=password,show='*').grid(row=1,column=2)
validateLogin = partial(validateLogin,password)
#login button
loginButton = Button(tkWindow,text="Login",command=validateLogin).grid(row=4,column=2)
tkWindow.mainloop()
编辑:使用枚举函数同时访问字符串值(在这种情况下为密码)并索引