Переименовать объект, внутренний repr, name // tkinter problem - PullRequest
0 голосов
/ 22 января 2019

Как я могу переименовать внутренний repr / name для объекта?Например, от <tkinter.Checkbutton object .!notebook2.!frame.!checkbutton> до <tkinter.Checkbutton object .!notebook2.!frame.!checkbutton01>.

. Мне нужно это сделать, потому что у меня проблема в том, что tkinter обнаруживает два флажка как один и тот же.Он показывает оба из них, но если я щелкаю один из них, он также переключает другой, и если у меня есть ~obj_name~.select(), он переключает оба из них.

Два флажка:

<tkinter.Checkbutton object .!checkbutton>
<tkinter.Checkbutton object .!notebook2.!frame.!checkbutton>

Код:

from tkinter import *
from tkinter import ttk

win = win = Tk()
win.minsize(950, 450)
win.maxsize(950, 450)

chb = []
shop_chb = []

chb.append(Checkbutton(win, text="test123"))
chb[0].place(x=830, y=10)

tabs_setting = ttk.Notebook(win, width=925, height=60)
tabs_setting.place(x=10, y=310)
tab_mp = Frame(tabs_setting, width=500, height=275, bg="lightgrey")
tab_mp.place(x=2, y=4)
tabs_setting.add(tab_mp, text="Marktplätze")

shop_chb.append(Checkbutton(tab_mp, text=test678))
shop_chb[0].grid(column=0, row=0)

win.mainloop()

Это, конечно, проклятие только очень простая модель проблемы.Но это показывает проблему.Если вы установите один флажок, оба переключатся.Вот почему у меня возникла идея переименовать внутреннее имя объекта / repr.Возможно ли это или есть другое решение этой проблемы?

1 Ответ

0 голосов
/ 23 января 2019

То, о чем вы просите, не является правильным решением вашей проблемы.

Кнопки проверки предназначены для связи с одной из специальных переменных tkinter (StringVar, IntVar и т. Д.),Если вы не дадите его, tkinter создаст его для вас, используя имя виджета.Поскольку вы не дали своим виджетам явное имя, последняя часть названного виджета - "! Checkbutton", и это имя, которое tkinter использует для переменной.Таким образом, обе контрольные кнопки имеют одну и ту же переменную.

Если вы передадите свои переменные кнопкам, ваша проблема исчезнет.

...
var1 = IntVar(value=0)
chb.append(Checkbutton(win, text="test123", variable=var1))
...
var2 = IntVar(value=0)
shop_chb.append(Checkbutton(tab_mp, text="test678", variable=var2))
...
...