Форум сайта python.su
0
Привет всем! Я новичок в пайтоне, но не совсем новичок в программировании
. В общем ситуация такая, набросал я GUI на Tkinter'е и не могу его заставить выполнять свои функции. Так же отдельно сделал консольную программку, которую как-нибудь хотелось бы прикрутить к GUI. В общем смотрите:
x = float(input("Введите длину дома: ")) y = float(input("Введите ширину дома: ")) z = float(input("Введите высоту дома: ")) square = ((x*z) + (y*z))*2 print("Площадь дома равна:", square) vid = input("Какой вид кирпича? Введите одинарный, полуторный, двойной ") kladka = input("Какая толщина кладки? Введите 0,5 1 1,5 2 2,5 ") if vid == "одинарный" and kladka == '0,5': print("Число кирпича", square * 61) if vid == "одинарный" and kladka == '1': print("Число кирпича", square * 128) if vid == "одинарный" and kladka == '1,5': print("Число кирпича", square * 189) if vid == "одинарный" and kladka == '2': print("Число кирпича", square * 256) if vid == "одинарный" and kladka == '2,5': print("Число кирпича", square * 317) #====================================================== if vid == "полуторный" and kladka == '0,5': print("Число кирпича", square * 45) if vid == "полуторный" and kladka == '1': print("Число кирпича", square * 95) if vid == "полуторный" and kladka == '1,5': print("Число кирпича", square * 140) if vid == "полуторный" and kladka == '2': print("Число кирпича", square * 190) if vid == "полуторный" and kladka == '2,5': print("Число кирпича", square * 235) #====================================================== if vid == "двойной" and kladka == '0,5': print("Число кирпича", square * 30) if vid == "двойной" and kladka == '1': print("Число кирпича", square * 60) if vid == "двойной" and kladka == '1,5': print("Число кирпича", square * 90) if vid == "двойной" and kladka == '2': print("Число кирпича", square * 120) if vid == "двойной" and kladka == '2,5': print("Число кирпича", square * 150)
from tkinter import * root = Tk() root.title("Brick Calc") root.minsize(width=270,height=480) root.resizable(False,False) vvod = Entry(root,width=20,bd=2) vvod1 = Entry(root,width=20,bd=2) vvod2 = Entry(root,width=20,bd=2) lab = Label(root,text="Размеры дома:", font = "Arial 10", fg="#CF0000") chislo = Label(root, text = "Длина(м)", font = "Arial 10") chislo1 = Label(root, text ="Ширина(м)", font = "Arial 10") chislo2 = Label(root, text = "Высота(м)", font = "Arial 10") lab1=Label(root,text = "Вид кладки:", font = "Arial 10", fg="#CF0000") sort_kir = Label(root, text = "Вид кирпича", font = "Arial 10") sort_klad = Label(root, text = "Толщина кладки", font = "Arial 10") var = IntVar() var.set(0) rad0 = Radiobutton(root,text="Одинарный(250x120x65мм)", variable=var,value=0) rad1 = Radiobutton(root,text="Полуторный(250x120x88мм)", variable=var,value=1) rad2 = Radiobutton(root,text="Двойной(250x120x138мм)", variable=var,value=2) var1 = IntVar() var1.set(0) rd0 = Radiobutton(root,text="0,5", variable=var1,value=0) rd1 = Radiobutton(root,text="1", variable=var1,value=1) rd2 = Radiobutton(root,text="1,5", variable=var1,value=2) rd3 = Radiobutton(root,text="2", variable=var1,value=3) rd4 = Radiobutton(root,text="2,5", variable=var1,value=4) but=Button(root,text="Рассчитать!",width=15) tex = Text(root,width=25,height=6,font="12",wrap=WORD) lab.grid(row=0,column=0) chislo.grid(row=1,column=0,pady=5) vvod.grid(row=1,column=1,padx=20,pady=5) chislo1.grid(row=2,column=0,pady=5) vvod1.grid(row=2,column=1,padx=20,pady=5) chislo2.grid(row=3,column=0,pady=5) vvod2.grid(row=3,column=1,padx=20,pady=5) lab1.grid(row=4,column=0,pady=0) sort_kir.place(x=0,y=155) rad0.place(x=90,y=135) rad1.place(x=90,y=155) rad2.place(x=90,y=175) sort_klad.place(x=0,y=240) rd0.place(x=120,y=220) rd1.place(x=120,y=240) rd2.place(x=120,y=260) rd3.place(x=160,y=240) rd4.place(x=160,y=220) but.place(x=81,y=315) tex.place(x=22,y=350) mainloop()
. Ну или хотя бы ткните носом в соответствующую литературу(можно и на английском).
Отредактировано george32451 (Авг. 18, 2014 19:32:12)
Офлайн
58
Мамочка моя 
Что в GUI не работает?
Офлайн
0
4kpt_II Дело в том, что все работает, окошечки там, переключатели… Но эта вся красота не выполняет свою функцию - не подсчитывает кирпича
Да, я зная, что не написал не единой строчки кода для этого, просто нужно узнать, каким образом написать эти строки? Указав в def функции какой-то код? Или что? Спасибо за внимание
Офлайн
58
Нужно вешать обработчик на определенное событие.
Для этого создается функция-обработчик (обычная функция)
После этого с функцией связывается событие. Тут два способа:
1. Метод bind(“<тип события>”, функция-обработчик)
2. Свойство button = функция_обработчик.
Для новичка предпочтительнее второй вариант.
Отредактировано 4kpt_II (Авг. 18, 2014 20:57:09)
Офлайн
0
4kpt_II Спасибо большое! Скажите, есть ли какая-нибудь литература/сайты по этому вопросу? Гуглил, нашел только офф. мануал на сайте пайтона и сайт на русском, не помню как называется
Офлайн
58
Для начала хватит любого сайта на русском. Потом уже пользуясь документацией можно просто смотреть свойства и методы отдельных виджетов. Есть книга на английском. Полностью по Tkinter.
Офлайн
0
4kpt_II Спасибо большое за помощь, не скажите, как книжечка называется?
Офлайн
58
Python and Tkinter Programming. Книга 2000 года.
Офлайн
0
4kpt_II Спасибо вам большое! Все сделал, все работает! И последний вопрос в этой теме: как сделать так, чтобы при запуске программы с графическим интерфейсом не открывалась консоль?
Офлайн