Форум сайта python.su
0
Обьясните пожалуйста кто нибудь почему когда я вызывая новую функцию создания нового окна она работает не корректно ? # когда я вызываю эту функцию ниже при нажатии кнопки то 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)
Офлайн
0
У Radiobutton есть метод .select()
rad0.select()
Офлайн
0
Когда не указываешь программе, что выделять по умолчанию, то она выделяет последний из упакованных переключателей
Офлайн
0
Спасибо select только и помог.... Но всётаки когдага я отдельно запускаю эту функцию Win2 она работает Корректно СТРАННО !!!
Офлайн
63
OzXaker
Ваш код просто снес мне мозг.
Тему, конечно, желательно было начать в разделе GUI, но как видно…
1. Для создания дочерних окон используйте toplevel (но если Вам не нужно одновременно включенное корневое окно, лучше использовать frame, т.е. рамки и паковать объекты в них и чередовать их включение и выключение).
2. Для создания однотипных виджетов используйте цикл и пакуйте их в словарь или список. (Лучше в словарь, в этом случае можно использовать id виджета как ключ).
3. В radiobutton и chekbutton существуют параметр, который отвечает за их включение или выключение. Используйте лучше его.
4. Разберитесь, зачем существует строка root.mainloop() и что она выполняет.
P.S. Оборачивайте код в теги. Очень сложно читать :)
Отредактировано 4kpt (Май 31, 2013 22:43:51)
Офлайн