#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,)
однако, если я вызову функцию, просто поместив это в «основную область» кода:
openProductsWindow()
это работает правильно
функция «openProductsWindow» довольно большая, поэтому я не буду приводить здесь все, но самое главное, что внутри функции есть вызов renderTable(1)
, а внутри функции с возможностью визуализации есть вызов updateTable(page)
, который является функцией, которая генерирует флажки, я уверенсохранение всех BooleanVar для каждой контрольной кнопки в списке, но проблема возникает, когда я пытаюсь прочитать значение каждого из 20 переменных
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, даже если я проверяю их все
извините за любые ошибки в английском, я не являюсь носителем языка
Комментарии:
1. Используете ли вы
Tk()
как для корневого окна, так и для окна продукта ?2. да, я использую, есть ли лучший способ сделать это? возможно, всплывающее окно
3. я провел некоторое исследование и наткнулся на
tk.Toplevel()
, я протестировал его, и он отлично работает, спасибо, но кто-нибудь может объяснить мне, в чем именно может быть проблема?4. Это связано с тем, что эти BooleanVars и checkbuttons находятся в разных
Tk()
экземплярах и не могут быть связаны друг с другом.