Найти - Пользователи
Полная версия: Проблемы управления Radiobutton (tcl-tkinter)
Начало » GUI » Проблемы управления Radiobutton (tcl-tkinter)
1 2
Steerch
Проблема следующая:
Рисую группы переключателей циклом:



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



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

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

Заранее спасибо.
4kpt
Совсем другое дело…

Смотри пример (взятый из книги):

# -*- coding: utf-8 -*-
import Tkinter

def die(event):
print methods[v.get()][0] #Определение метода по номеру
root.destroy()

root = Tkinter.Tk()

button = Tkinter.Button(root)
button["text"] = u"Выход"
button.bind("<Button>", die)
button.pack()

v = Tkinter.IntVar() #Создание контейнера для храниения результата выбора
v.set(2) #Выбор по умолчанию на третью radiobutton

methods = [(u"Метод 1", 0), (u"Метод 2", 1), (u"Метод 3", 2), (u"Метод 4", 3), (u"Метод 5", 4)]
for t, m in methods:
b = Tkinter.Radiobutton(root, text=t, variable=v, value=m) #Обрати внимание на variable
b.pack(anchor=W)
root.mainloop()
Steerch
Блин, это совершенно не ответ на мой вопрос, хотя и спасибо за попытку =)

Объясню проблему попонятнее: После создания РБ я могу получать с них результат, т.к. у них разная переменная и разные значения в группе. Но я не могу обратится к РБ чтоб назначить ей новые свойства с помощью .configure, например. Не могу получить ее свойства, тк не работает .cget.

Происходит это от того, что переменная RB в моем коде (которая и является этой РБ) локальная в функции rb_ur, и даже если я ее выведу на глобальный уровень, она будет привязана только к последней нарисованной кнопке. я использую эту функцию для рисовки ВСЕХ групп РБ в форме. ну вот и такой затык произошел. я вот и спрашиваю, можно ли получить доступ к определенному виджету не имея возможности обратится к его имени (из-за отсутствия такового).

я так полагаю что у каждого виджета есть свой ИД, ну вот для начала вопрос, как его получить, и как, имея его, получить доступ к виджету, для назначения новых свойств, например. ну вот захочу этому РБ назначить новый цвет. вот куда и как мне в данном случае втыкать .configure ( bg = ‘red’) ?
4kpt
Я уже писал об этом…

4kpt
Я делаю немного не так. Один раз погорел на именах виджетов при перезагрузке окон и стал использовать фиксированный идентификатор id. Единственное, приходится переводить id в name посредством метода name_path = root.winfo_pathname(id). Предварительно необходимо сохранить соответствие кода id и виджета где-то в отдельном словаре. Используемое имя (для прямого вызова объекта) в этом случае носит характер name_full = root.nametowidget(name_path)
Steerch
О! то самое, пасиб… завтра помучаю

Блин, коротко и ясно =)
4kpt
Если не получится, скажешь, я приведу пример…
Опс.. Забыл - получить id - widget.winfo_id()….
Steerch
Разобралсо кажись. Повторное СПАСИБО!



За одно Лямбду освоил - ваще жить легко стало =)
4kpt
Steerch
Программа цвета вырви глаз. Ты решил пользователю взорвать мозг и полностью его уничтожить. Дезориентация в твоей программе для начинающего юзера гарантирована. Такого количества лишнего графического шума на одном поле я еще никогода не видел!!!. Хотя если работает то хорошо…

Но я все же ремкомендую ознакомится с книгами по дизайну пользовательсого интерфейса… Самая маленькая из них занимает всего 170 стр, так что за 2 дня ее можно проглотить.

Херово еще и то, что подсветка у тебя разного размера. Даже я потерялса, смотря на сие творение (без обид). Лучше помещай отдельные радиокнопки в рамки фиксированного размера и рамки закрашивай. И убери (опять же моя рекомендация) эти очень яркие цвета. Можно использовать полу-тона. Для их определения рационально вызвать панель tkColorChoose, которая и возвратит тебе кодовое значение любого цвета…

Кстати, если будет нужна книга по созданию пользовательског интерфейса - могу сбросить на мыло…
Steerch
Хватит умничать, это не программа, это пример использования того, что ты написал наслоенные на мою проблему =)

то, что делаю я, выглядит вот-так:



Кто знает GURPS тот легко поймет =)
4kpt
Мой мозг окончательно развален… Как с этим можно работать. Ну разве что для себя. Тогда понятно… Лучше сделать последовательность заполнения (так называемый мастер) или два списка, где в первом - выбор основных групп, а во втором уточнение праметров этих групп… Да и правило 7+-2 никто не отменял. Мои клиенты порвали бы мне за такую работу Ж..ПУ.

Просто я пишу программы для пользователей, а не для себя…

И я не умничаю. Я просто пытаюсь помочь. Косвенно указываю на твои ошибки. Не воспринимай это как изевательство.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB