我正在尝试创建一个GUI,其中包含不确定数量的标签和for循环。 标签的数量应该可以通过按钮触发的func进行更改。 这是我的密码:
from tkinter import *
def change1():
print(days)
in1 = input('how many days?')
for a in range(0, len(days)):
days.remove(days[0])
for a in range(0, int(in1)):
in2 = input('type in another day: ')
days.append(in2)
krofl = (days[0], '-', days[len(days)-1])
firstlast.set(krofl)
Fenster = Tk()
Fenster.title("some title")
Fenster.minsize(width=800, height=900)
Fenster.resizable(width=FALSE, height=FALSE)
presetdays = ['mon', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun']
days = []
for a in range(0, len(presetdays)):
days.append(presetdays[a])
firstlast = StringVar()
firstlast.set(str("preset value"))
lab1_1 = Label(Fenster, text='Zeitspanne:')
lab1_1.grid(row=0, column=0)
lab1_2 = Label(Fenster, textvariable = firstlast)
lab1_2.grid(row=0, column=1)
but1 = Button(Fenster, text='Change', command=change1)
but1.grid(row=0, column=2)
for a in range(0, len(days)):
karamel = Label(Fenster, text = days[a])
karamel.grid(row=a, column=6)
Fenster.mainloop()
我的问题是,标签列表将是周一,周二。。。。。即使按下按钮并更改了日期列表。 我尝试了以下方法:
number_days = IntVar()
number_days.set(7)
并将此添加到def change1中:
sth = int(len(days))
number_days.set(sth)
最后将for循环改为:
for a in range(0, number_days):
karamel = Label(Fenster, text = days[a])
karamel.grid(row=a, column=6)
但它返回以下错误: TypeError:“IntVar”对象不能解释为整数
有没有办法让它工作,以便所有标签在def change1()之后更新?你知道吗
number_days
不是正整数变量。它是对象IntVar
。你必须使用number_days.get()
要更改标签,您必须记住列表中所有标签的
karamel
(例如all_labels
),然后使用all_labels[number].config(text='new text')
或所有标签[number]['text']=“new text'`还可以使用
some_label.grid_forget()
从网格中删除标签。你知道吗相关问题 更多 >
编程相关推荐