Python ттк Создание групп радиобутонов (!) В l oop: как установить переменную - PullRequest
0 голосов
/ 25 февраля 2020

Я смотрю на свою программу и знаю, что могу заставить ее работать с чем-то вроде «varName = StringVar», а затем назначить другое значение varName. но я не могу заставить его работать.

так общая проблема: я создаю неопределенное количество фреймов меток, каждый с меткой и двумя радиокнопками, одним нажатием кнопки. Этот код, очевидно (как указано в первых строках) использует одну и ту же переменную [в моем случае «zvar»] ... поэтому все кнопки изменятся, если я изменю одну кнопку. так что я знаю, где ошибка, но не могу заставить ее работать.

вот код класса:

class ac_radiobtn(ttk.Radiobutton):
def __init__(self,*args,**kwargs):
    super().__init__(*args,**kwargs)
    self.configure(command= lambda: self.callback())
def callback(self):

    if zvar.get()==1:
        for heli in HELI2:
            lfzconfig[(self.master.cget("text"))]['status'] = '1'
            if heli.cget("text").strip()==self.master.cget("text"):
                #indexnumber bekommen und das ganze in HELI1 auch machen
                heli.configure(style='styleLFZ.TLabel')

        for heli1 in HELI1:
            if heli1.cget("text").strip()==self.master.cget("text"):
                heli1.configure(style='styleLFZ.TLabel')


    elif zvar.get()==2:
        #label stle für das label in LFZ und auf seite 1 in die jeweilige Farbe setzen (hier 'styleKaputt.TLabel'
        lfzconfig[(self.master.cget("text"))]['status'] = '2'
        for heli in HELI2:
            if heli.cget("text").strip()==self.master.cget("text"):
                heli.configure(style='styleKaputt.TLabel')
        for heli1 in HELI1:
            if heli1.cget("text").strip()==self.master.cget("text"):
                heli1.configure(style='styleKaputt.TLabel')
    else:
        pass
    with open(lfz_ini,"w") as configfile:
        lfzconfig.write(configfile)

и это часть, из которой называется класс:

 def lfz_status():
        LLabelFrame2 = ttk.LabelFrame(frame2, width=250, height=100, text=heli)
        LLabel2 = ttk.Label(LLabelFrame2, text=ltext, style='styleLFZ.TLabel', image=img, compound=CENTER))
        LRadiobutton1 = ac_radiobtn(LLabelFrame2, text="Einsatzbereit", variable=zvar, value=1)
        LRadiobutton2 = ac_radiobtn(LLabelFrame2, text="Nicht Einsatzbereit", variable=zvar, value=2)
        [...]

я пропустил остальную часть кода Поскольку проблема заключается в переменной части, насколько я знаю (или предполагаю).

, как упоминалось ранее, я предполагаю, что знаю, как смягчить эту проблему, но не могу заставить ее работать. так что мне действительно нужен "очевидный" ответ.

(и да, кодировка выполнена в стиле кувалды и не обязательно хороша: D)

...