Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 7, 2012 11:48:59

Steerch
От:
Зарегистрирован: 2010-07-21
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Обрашение к Radiobutton

Проблема следующая:
Рисую группы переключателей циклом:
def rb_ur (mass,grup,state,frame,var):
var.set(grup)

for text, stoim, r,c,comm in mass:
RB = Radiobutton (frame,text = text,variable = var,value = stoim, command = comm)

if state == 0:
RB.configure (state = DISABLED)
else:
RB.configure (state = NORMAL)

RB.grid(row = r,column = c,sticky = ‘w’)
RB.select()
RB.select()

Пример вызова функции:

mod_uron_p = [('Пб-',3,3,1,e_vozd_p),
('Пб+',6,4,1,e_vozd_p),
('Токс',4,3,2,e_vozd_p),
('Реж',7,4,2,e_vozd_p),
('Обж,Дрб,Пб',5,3,5,e_vozd_p),
('Прон,Пб++',8,4,5,e_vozd_p),
('Рзед,Изн',10,5,1,e_vozd_p),
('Возд',10.0,5,2,e_vozd_p),]
rb_ur (mod_uron_p,'uron_p',vzn_p.get(),pr_uron_f_p,var_rb_p)

И таких множество.

Возник вопрос, как обратится к конкретному переключателю, ведь у них у всех одно имя, например что-бы поменять конфигурацию. Как получить все данные КОНКРЕТНОГО переключателя.

Заранее спасибо.



Офлайн

#2 Ноя. 7, 2012 14:15:12

Steerch
От:
Зарегистрирован: 2010-07-21
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Обрашение к Radiobutton

Блин, народ. Ну хоть ссылочу на мануал какой скинте…



Офлайн

#3 Ноя. 7, 2012 20:26:53

4kpt
От: Харьков
Зарегистрирован: 2010-11-03
Сообщения: 998
Репутация: +  63  -
Профиль   Отправить e-mail  

Обрашение к Radiobutton

Steerch - Вам не отвечают, потому что вы задали вопрос не в тот раздел. Построение Radiobutton - отноститься к разделу по GUI (графический интерфейс пользователя), но…

Ответ по Вашему вопросу:
Есть несколько возможностей для снятия данных по отдельному интерфейсу, который нажат:

Возможность первая:
Никто не отменял функцию имя_виджета.cget(свойство)

Возможность вторая:
Никто Вам не запрещает при создании массива Radiobutton привазать их к списку или, что еще лучше, к словарю wid = {id_виджета: }. Это позволит унавать имя виджета в инструкции bind метдом wid.get(event.widget.winfo_id()) - Вы получите КОДОВОЕ_СЛОВО

Возможность третья:
Создать независимый словарь, куда при каждом создании Radiobutton помещать пару wid = {Radiobutton.winfo_name(): КОДОВОЕ СЛОВО}. В результате, тоже в методе bind вы можете узнать, который виджет нажат методом wid.get(event.widgwt.winfo_name()) - Также получите кодовое слово…

Возможность четвертая и последняя (я просто задолбался придумывать).
При создании Radiobutton вы можете также создать список, состоящий из IntVar. Каждому новому виджету присвоить свой IntVar, который будет отличаться позицией в списке. Прошерстив значение всех IntVar в списке Вы можете узнать о том, какая кнопка была выбрана. Изменяя определенный IntVar Вы также меняете включено и выключено….

И самый простой способ…
Когда создаешь Radiobutton. Присваиваешь свойству variable один IntVar, а свойству value - разные значения от 0 и до (последной радиокнопки - 1)… В результате IntVar.get() даст номер нажатой радиокнопки (номер будет от 0 до последней радиокнопки - 1).



Отредактировано 4kpt (Ноя. 7, 2012 20:43:15)

Офлайн

#4 Ноя. 9, 2012 17:11:37

Steerch
От:
Зарегистрирован: 2010-07-21
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Обрашение к Radiobutton

Спасибо за ответ, попрошу модеров перенести вопрос.

Первый способ - не решение, из-за цикла все радиобатоны имеют одно имя =) ну в общем я подумаю, еще раз спасибо



Отредактировано Steerch (Ноя. 9, 2012 17:13:56)

Офлайн

#5 Ноя. 9, 2012 22:25:37

4kpt
От: Харьков
Зарегистрирован: 2010-11-03
Сообщения: 998
Репутация: +  63  -
Профиль   Отправить e-mail  

Обрашение к Radiobutton

Я имел ввиду cget(“text”) если ты вешал все виджеты не не одну переменную, а в списке…., но в этом случае все остальные радиокнопки придется самому обездвиживать. Вообще радиокнопки - не очень хорошее решение. Оно очень тяжеловесное. Его рационально заменить список с возможностю выбора элемента. Кроме того, список можно снабдить прокруткой и при этом вместить 20-30 позиций. 20-30 радиокнопок - это ЖЕСТЬ… Кроме того, не забывай правило 7+-2 элемента в группе…



Отредактировано 4kpt (Ноя. 9, 2012 22:32:46)

Офлайн

#6 Ноя. 10, 2012 07:54:40

Steerch
От:
Зарегистрирован: 2010-07-21
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Обрашение к Radiobutton

Я программирую 2 недели, от силы =) Радиокнопки показались мне наиболее подходящими для той задачи которую они выполняют =) Более всего подошел-бы комбо-бокс, но он в ткинтер отсутствует, сам я потрачу больше времени на его конструкцию, чем на радиокнопки. Вообще изменяю состояние радиокнопок запуском той-же функции, что и при рисовании меняя только state, что видно в первом посте, в коде. Это приводит к нужным результатам, но как я понял, тупо рисует по верх старых кнопочек - новые. а так бесконечно продолжаться не может. Моя програмка для личного пользования, так сказать: спецефический калькулятор. Но в будущем, мало-ли что. Затык надо решить =)



Офлайн

#7 Ноя. 10, 2012 15:41:37

4kpt
От: Харьков
Зарегистрирован: 2010-11-03
Сообщения: 998
Репутация: +  63  -
Профиль   Отправить e-mail  

Обрашение к Radiobutton

Это с каких таких делов комбокс отсутствует… Без возможности замены текста option menu, но он не очень… Хотя для начала может и подойти.

Тебе написать пример с радиокнопками??? Тут не напишу принципиально. Создай тему в разделе GUI - тогда, пожалуйста…



Отредактировано 4kpt (Ноя. 10, 2012 15:41:49)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version