Python 从tk按钮调用与直接调用时,函数的行为不同

Python 从tk按钮调用与直接调用时,函数的行为不同,python,python-3.x,tkinter,Python,Python 3.x,Tkinter,我遇到了一个非常奇怪的问题,我的tkinter程序中有一个“产品窗口”,它应该在我按下按钮时打开,但当我以这种方式打开它时,复选按钮不能正常工作 btn_mngProd=tk.Button(frm_left, text='Manage Products', font=("Tahoma",14),width=16,height=1, command=openProductsWindow) btn_mngProd.pack(side='bottom',padx=10,pady=5

我遇到了一个非常奇怪的问题,我的tkinter程序中有一个“产品窗口”,它应该在我按下按钮时打开,但当我以这种方式打开它时,复选按钮不能正常工作

btn_mngProd=tk.Button(frm_left, text='Manage Products', font=("Tahoma",14),width=16,height=1, command=openProductsWindow)
btn_mngProd.pack(side='bottom',padx=10,pady=5,)
但是,如果我只是通过将其放在代码的“主区域”来调用函数:
openProductsWindow()
它工作正常

“openProductsWindow”函数有点大,所以我不会把全部内容放在这里,但最重要的是,在函数内部,有一个对
renderTable(1)
的调用,在renderTable函数内部,有一个对
updateTable(page)
的调用,它是生成复选按钮的函数,我将所有BooleanVar保存到列表中的每个复选按钮,但当我尝试读取每个20s Var的值时,问题就开始了

def updateTable(page):
    #some code here
    global checkboxesVars
    checkboxesVars.clear()   
    rowCount=1
    for j in range((page-1)*20,page*20):
        
        #some code here

        checkboxesVars.append(tk.BooleanVar())
        cbx_prod=tk.Checkbutton(master=frm_table,bg="white",onvalue=True, offvalue=False, variable=checkboxesVars[rowCount-1], command=checkCheckboxes)
        cbx_prod.grid(row=rowCount, column=3,sticky='nesw',padx=1,pady=1)
        if(prodNumber > dataLenght):
            cbx_prod.configure(state='disabled')
        rowCount+=1  
此函数用于检查按下了多少复选框:

    global checkboxesVars
    checkeds=0
    for i in range(len(checkboxesVars)):
        print(i)
        cb_var=checkboxesVars[i]
        print(cb_var.get())
        if(cb_var.get()):
            checkeds+=1
我在那里有两个打印帮助我调试,这是我选中前3个框时应该打印的内容:

0
True
1
True
2
True
3
False
4
False...
这正是我直接执行
openProductsWindow()
时得到的结果,但是如果我按下按钮执行,所有20个复选框变量都显示为False,即使我选中了所有复选框变量


很抱歉出现任何英语错误,我不是母语人士

您是否对根窗口和产品窗口都使用
Tk()
?是的,我使用,有更好的方法吗?可能是一个弹出窗口我做了一些研究,发现了
tk.Toplevel()
,我对它进行了测试,它工作得很好,谢谢,但是有人能告诉我到底是什么问题吗?因为那些布尔变量和复选按钮在不同的
tk()
实例中,它们不能相互连接。