Уведомления

Группа в Telegram: @pythonsu

#1 Май 30, 2013 23:15:58

OzXaker
От:
Зарегистрирован: 2010-12-01
Сообщения: 49
Репутация: +  0  -
Профиль   Адрес электронной почты  

tkinter в Python 3.2

Обьясните пожалуйста кто нибудь почему когда я вызывая новую функцию создания нового окна она работает не корректно ? # когда я вызываю эту функцию ниже при нажатии кнопки то Radiobutton должен быть выделен 1й ( rad0 ) а почему то выделен 2й (rad1).. акогда я запускаю эту функцию отдельно она работает корректно ! почему?

вот пример кода:

------------------------------

import tkinter

root = tkinter.Tk()

tk = tkinter

def Win2(): # эту функцию

tk2 = tkinter

root2 = tkinter.Tk()

var=tk2.IntVar()

var.set(0) # Выделяю 1й - Radiobutton ( rad0 )

rad0 = tk2.Radiobutton(root2,text="0-10",variable=var,value=0)

rad0.pack()

rad1 = tk2.Radiobutton(root2,text="11-20",variable=var,value=1) # А выделяется 2й Radiobutton Этот

rad1.pack()

root2.mainloop()

-----------------

lab = tk.Label(root,text="Ваш адрес", bg="white",fg="red")

lab.pack()

ent = tk.Entry(root,width=20,bd=3)

ent.pack()

lab2 = tk.Label(root,text="Ваш комментарий", bg="black",fg="green")

lab2.pack()

tex = tk.Text(root,width=40,height=10)

tex.pack()

but = tk.Button(root,text="Сменить окно",width=30,height=5,bg="white",fg="blue",command=Win2)

but.pack()

root.mainloop()



Отредактировано OzXaker (Май 30, 2013 23:30:17)

Офлайн

#2 Май 31, 2013 10:01:40

evgen34
Зарегистрирован: 2013-03-26
Сообщения: 57
Репутация: +  0  -
Профиль   Отправить e-mail  

tkinter в Python 3.2

У Radiobutton есть метод .select()

rad0.select()
тебе поможет

Офлайн

#3 Май 31, 2013 10:06:32

evgen34
Зарегистрирован: 2013-03-26
Сообщения: 57
Репутация: +  0  -
Профиль   Отправить e-mail  

tkinter в Python 3.2

Когда не указываешь программе, что выделять по умолчанию, то она выделяет последний из упакованных переключателей

Офлайн

#4 Май 31, 2013 19:02:34

OzXaker
От:
Зарегистрирован: 2010-12-01
Сообщения: 49
Репутация: +  0  -
Профиль   Адрес электронной почты  

tkinter в Python 3.2

Спасибо select только и помог.... Но всётаки когдага я отдельно запускаю эту функцию Win2 она работает Корректно СТРАННО !!!



Офлайн

#5 Май 31, 2013 22:42:19

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

tkinter в Python 3.2

OzXaker
Ваш код просто снес мне мозг.
Тему, конечно, желательно было начать в разделе GUI, но как видно…
1. Для создания дочерних окон используйте toplevel (но если Вам не нужно одновременно включенное корневое окно, лучше использовать frame, т.е. рамки и паковать объекты в них и чередовать их включение и выключение).
2. Для создания однотипных виджетов используйте цикл и пакуйте их в словарь или список. (Лучше в словарь, в этом случае можно использовать id виджета как ключ).
3. В radiobutton и chekbutton существуют параметр, который отвечает за их включение или выключение. Используйте лучше его.
4. Разберитесь, зачем существует строка root.mainloop() и что она выполняет.

P.S. Оборачивайте код в теги. Очень сложно читать :)



Отредактировано 4kpt (Май 31, 2013 22:43:51)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version