gpt4 book ai didi

python - 单击一个复选框后,两个复选框都会被选中

转载 作者:行者123 更新时间:2023-12-01 09:31:30 26 4
gpt4 key购买 nike

我正在为一个名为“组织者”的项目制作一个应用程序。这是一个组织应用程序。我遇到一个问题,当您选中一个复选框时,它们都会被选中。

如何解决这个问题?

运行后转到: list -> 输入值 -> 单击“添加分配” -> 重复几次 -> 尝试单击一个

此外,我的 .update() 可以工作,但似乎仍然会导致错误?你知道为什么吗?

谢谢!

import tkinter as tk
root = tk


AsgnList = []
#Initialization
class TheOrganizer(tk.Tk):

def __init__(self, *args, **kwargs):

tk.Tk.__init__(self, *args, **kwargs)


container = tk.Frame(self)
self.geometry('500x500')
container.pack(side="top", fill="both", expand = True)
container.grid_rowconfigure(0, weight=1)
container.grid_columnconfigure(0, weight=1)

self.frames = {}

for F in (StartPage, AddAsgnPage):

frame = F(container, self)
self.frames[F] = frame
frame.grid(row=0, column=0, sticky="nsew")


self.show_frame(StartPage)

def show_frame(self, cont):
frame = self.frames[cont]
frame.tkraise()


def RunApp():
app = TheOrganizer()
app.title('The Organizer')
app.mainloop()





#Making New Pages
'''
Make sure for very new page, you add it to the 'for loop'
'''


HeadFont = ("Verdana", 40)

class StartPage(tk.Frame):

def __init__(self, parent, controller):

tk.Frame.__init__(self,parent)

LabTitle = tk.Label(self, text="The Organizer", font=HeadFont)
LabTitle.pack()

AddAsgnBtn = tk.Button(self, text='Checklist', command=lambda: controller.show_frame(AddAsgnPage))
AddAsgnBtn.place(x=100,y=250)

class AddAsgnPage(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)

LabTitle = tk.Label(self, text="Assignments", font=HeadFont)
LabTitle.pack()

#Input Assignment
def getEntry():
entryInput = AsgnEntry.get()
AsgnList.append(entryInput)
yVal = 300
while 1:
var = tk.IntVar()
for z in AsgnList:
tk.Checkbutton(self, text=z, variable=var).place(x=200,y=yVal)
yVal += 25
TheOrganizer.update()


AsgnEntry = tk.Entry(self)
AsgnEntry.place(x=175,y=205)

SubBtn = tk.Button(self, text='Add Assignment', command=getEntry)
SubBtn.place(x=25,y=200)

BackBtn = tk.Button(self, text='Back', command=lambda: controller.show_frame(StartPage))
BackBtn.place(x=250,y=400)

最佳答案

您对两个复选框使用相同的变量。将变量创建移至循环内部,以使用不同的变量。

var_list = []
for z in AsgnList:
var = tk.IntVar()
tk.Checkbutton(self, text=z, variable=var).place(x=200,y=yVal)
yVal += 25
var_list.append(var)

也就是说,您可能想要存储变量,以便稍后可以检查标记了哪些复选框。因此,我添加了一个 var_list 列表对象来存储所有创建的 var

关于python - 单击一个复选框后,两个复选框都会被选中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49929541/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com