Как добавить Combobox каждый раз, когда я нажимаю кнопку в Tkinter? - PullRequest
0 голосов
/ 01 февраля 2019

Я хочу построить графический интерфейс, и есть кнопка, которую Combobox добавляет при каждом нажатии кнопки.но я не могу узнать, как изобразить или закодировать эту концепцию

И есть ли другой виджет?или есть другой способ построить мою концепцию ??пожалуйста, кто-нибудь, помогите мне ..

основная концепция без использования tkinter выглядит следующим образом.я хочу, чтобы эта концепция была сделана в Tkinter.

[ЭТО ТО, ЧТО Я ПОПЫТАЛ, НО, КОГДА Я НАЖИМАЮ КНОПКУ, ВСЕ КОМБОБОК ДОБАВЛЕН, РАБОТАЕТ ВМЕСТЕ (что означает, что когда я изменяю имя списка, весь комбобокс также изменяется))]

def Plus_EXT():
    button_plus = Button(window3,justify = CENTER,command = Add_EXT, text= "+")
    button_plus.grid(row=0,column=0)

def Add_EXT():
    global Num
    window3.update()
    Num += 1
    CEList1 = [x for x in os.listdir(cur_dir) if ('CE' in x.upper()) and ('.rpt' in x)]
    RPT_EXT_file=ttk.Combobox(window3, values=CEList1,textvariable= EXT_String)
    RPT_EXT_file.grid(row=8+Num,column=1)
    RPT_EXT_file.set("FILE")

[ОСНОВНАЯ КОНЦЕПЦИЯ БЕЗ ИСПОЛЬЗОВАНИЯ TKINTER]

CE_Num= int(input("How Many EXTRA Chordae?: "))

User_File = input("Type the New File Name: ")

for Num_Of_EXT in range(CE_Num):
    RPT_EXT_file = input("Type the RPT of EXTRA CHORDAE: ") + ".rpt"
    EXTRA(User_File,RPT_EXT_file,Num_Of_EXT)
    EXTRA_PLT(User_File,Num_Of_EXT)

желаемый результат: {каждый раз, когда я нажимаю кнопку, в рамку добавляется новый Combobox со списками, которыеработает отдельно.}

1 Ответ

0 голосов
/ 01 февраля 2019

Проблема в том, что все ваши виджеты Combobox связаны одной текстовой переменной с именем EXT_String. Так что, когда вы изменяете значение одного виджета Combobox, он обновляет одинаковое значение во всех них.

Я бы предложилсохранить список таких переменных и индексировать этот список, используя NUM в вашем цикле для назначения текстовой переменной.

ОБНОВЛЕНИЕ:

Просто пример, основанный на ограниченном коде, совместно используемом в методе Add_EXT:

global var_list
var_list.append(IntVar()) #Or StringVar(), whatever you are using
RPT_EXT_file=ttk.Combobox(window3, values=CEList1,textvariable=var_list[-1])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...