Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 6, 2016 16:41:54

Submersed
Зарегистрирован: 2016-01-06
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Как согласно количества строк в файле построить Checkbutton-меню?

Добрый день. Нужна помощь в следующем вопросе.

Имеется файл состоящий из определенного ко-ва строк (их количество может меняться).
Необходимо привязать эти строки к Checkbutton-меню существующей программы. Оговорюсь, что программа всегда имеет доступ к файлу, определяет количество его строк и может понимать что и в какой строке написано.
Задача - связать имеющиеся данные с меню Checkbutton:
- кол-во строк - это кол-во пунктов меню;
- содержание этих строк - это атрибут “text” данных пунктов меню.

Может кто-то сталкивался с подобным вопросом и знает как это лучше реализовать?
Благодарю.

Офлайн

#2 Янв. 10, 2016 13:54:44

Submersed
Зарегистрирован: 2016-01-06
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Как согласно количества строк в файле построить Checkbutton-меню?

В общем, вроде немного разобрался.
Кому интересно, ответ выглядит примерно так:

f = open(r'd:\My\1.txt')
app = f.readlines()
root.vars={}
for q in app:
      root.var=StringVar()
      Checkbutton(root, text=q, variable=root.var).grid()
      root.vars[q] = root.var

Отредактировано Submersed (Янв. 10, 2016 15:18:32)

Офлайн

#3 Янв. 22, 2016 15:37:28

Submersed
Зарегистрирован: 2016-01-06
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Как согласно количества строк в файле построить Checkbutton-меню?

Приветствую.
Просьба помочь с настигнувшей проблемой. В программировании новичок, поэтому хотелось бы услышать ваши советы и рекомендации.
Столкнулся со следующей проблемой…
На основе строк из текстового файла формирую меню Checkbutton.
Строки в файле разделены символом “*”: первая часть - текст кнопки Checkbutton, вторая - значение “onvalue”
Нужно определить какие из кнопок Checkbutton отмечены галочкой и записать “onvalue”-значения этих кнопок в другой файл. Но, сделать это никак не получается.
Помогите, кто чем может ))
Ниже - моя попытка написать скрипт:

 
...
#Рисуем Checkbutton-меню на основе строк в файле
i=1
u=2
root.vars={}
for q in app0:
    root.var=StringVar()
    x0 = q.split('*')[0]
    x1 = q.split('*')[1]
    ch0 = Checkbutton(canvas0,text=x0,variable=root.var,onvalue='x1',offvalue='')
    ch0.grid(row=u,column=i,ipadx=45,padx=2,pady=10,sticky='nsew')
    ch0.grid_propagate(False)
    #print(x1)
    if i<4:
        i+=1
    else:
        u+=1
        i=1
    root.vars[q] = root.var
#Подключаем метод, т.к. есть возможность выбрать файл откуда считаются строки
def checkr(event): 
    v = countryvar.get()
    if v == file[0]:
        if canvas1.winfo_viewable():
            canvas1.pack_forget()
        elif canvas2.winfo_viewable():
            canvas2.pack_forget()
        elif canvas3.winfo_viewable():
            canvas3.pack_forget()
        canvas0.pack(side=LEFT,fill=BOTH,expand=True)
        canvas0.pack_propagate(False)
        
    elif v == file[1]:
        if canvas0.winfo_viewable():
            canvas0.pack_forget()
        elif canvas2.winfo_viewable():
            canvas2.pack_forget()
        elif canvas3.winfo_viewable():
            canvas3.pack_forget()
        canvas1.pack(side=LEFT,fill=BOTH,expand=True)
        canvas1.pack_propagate(False)
        i=1
        u=2
        root.vars={}
        for q in app1:
            x0 = q.split('*')[0]
            x1 = q.split('*')[1]
            root.var=StringVar()
            ch1 = Checkbutton(canvas1,text=x0,variable=root.var,onvalue=x1,offvalue='')
            ch1.grid(row=u,column=i,ipadx=45,padx=2,pady=10,sticky='nsew')
            ch1.grid_propagate(False)
            if i<4:
               i+=1
            else:
               u+=1
               i=1
            ch1.state(['selected'])
            root.vars[q] = root.var
            
    elif v == file[2]:
        if canvas0.winfo_viewable():
            canvas0.pack_forget()
        elif canvas1.winfo_viewable():
            canvas1.pack_forget()
        elif canvas3.winfo_viewable():
            canvas3.pack_forget()
        canvas2.pack(side=LEFT,fill=BOTH,expand=True)
        canvas2.pack_propagate(False)
        i=1
        u=2
        root.vars={}
        for q in app2:
            x0 = q.split('*')[0]
            x1 = q.split('*')[1]
            root.var=StringVar()
            ch2 = Checkbutton(canvas2,text=x0,variable=root.var,onvalue=x1,offvalue='')
            ch2.grid(row=u,column=i,ipadx=45,padx=2,pady=10,sticky='nsew')
            ch2.grid_propagate(False)
            if i<4:
               i+=1
            else:
               u+=1
               i=1
            ch2.state(['selected'])
            root.vars[q] = root.var
    elif v == file[3]:
        if canvas1.winfo_viewable():
            canvas1.pack_forget()
        elif canvas2.winfo_viewable():
            canvas2.pack_forget()
        elif canvas0.winfo_viewable():
            canvas0.pack_forget()
        canvas3.pack(side=LEFT,fill=BOTH,expand=True)
        canvas3.pack_propagate(False)
        i=1
        u=2
        root.vars={}
        for q in app3:
            x0 = q.split('*')[0]
            x1 = q.split('*')[1]
            root.var=StringVar()
            ch3 = Checkbutton(canvas3,text=x0,variable=root.var,onvalue=x1,offvalue='')
            ch3.grid(row=u,column=i,ipadx=45,padx=2,pady=10,sticky='nsew')
            ch3.grid_propagate(False)
            if i<4:
               i+=1
            else:
               u+=1
               i=1
            ch3.state(['selected'])
            root.vars[q] = root.var

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version