Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 18, 2014 19:09:34

george32451
Зарегистрирован: 2014-08-18
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите заставить работать GUI (Tkinter, Python 3.4)

Привет всем! Я новичок в пайтоне, но не совсем новичок в программировании . В общем ситуация такая, набросал я 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)
Это, как вы уже поняли, консольная версия. А вот и сам GUI:
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)

Офлайн

#2 Авг. 18, 2014 19:38:52

4kpt_II
От: Харьков
Зарегистрирован: 2013-10-24
Сообщения: 999
Репутация: +  58  -
Профиль   Отправить e-mail  

Помогите заставить работать GUI (Tkinter, Python 3.4)

Мамочка моя
Что в GUI не работает?

Офлайн

#3 Авг. 18, 2014 20:13:28

george32451
Зарегистрирован: 2014-08-18
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите заставить работать GUI (Tkinter, Python 3.4)

4kpt_II Дело в том, что все работает, окошечки там, переключатели… Но эта вся красота не выполняет свою функцию - не подсчитывает кирпича Да, я зная, что не написал не единой строчки кода для этого, просто нужно узнать, каким образом написать эти строки? Указав в def функции какой-то код? Или что? Спасибо за внимание

Офлайн

#4 Авг. 18, 2014 20:43:44

4kpt_II
От: Харьков
Зарегистрирован: 2013-10-24
Сообщения: 999
Репутация: +  58  -
Профиль   Отправить e-mail  

Помогите заставить работать GUI (Tkinter, Python 3.4)

Нужно вешать обработчик на определенное событие.
Для этого создается функция-обработчик (обычная функция)
После этого с функцией связывается событие. Тут два способа:
1. Метод bind(“<тип события>”, функция-обработчик)
2. Свойство button = функция_обработчик.

Для новичка предпочтительнее второй вариант.

Отредактировано 4kpt_II (Авг. 18, 2014 20:57:09)

Офлайн

#5 Авг. 19, 2014 09:18:45

george32451
Зарегистрирован: 2014-08-18
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите заставить работать GUI (Tkinter, Python 3.4)

4kpt_II Спасибо большое! Скажите, есть ли какая-нибудь литература/сайты по этому вопросу? Гуглил, нашел только офф. мануал на сайте пайтона и сайт на русском, не помню как называется

Офлайн

#6 Авг. 19, 2014 19:09:42

4kpt_II
От: Харьков
Зарегистрирован: 2013-10-24
Сообщения: 999
Репутация: +  58  -
Профиль   Отправить e-mail  

Помогите заставить работать GUI (Tkinter, Python 3.4)

Для начала хватит любого сайта на русском. Потом уже пользуясь документацией можно просто смотреть свойства и методы отдельных виджетов. Есть книга на английском. Полностью по Tkinter.

Офлайн

#7 Авг. 19, 2014 20:19:42

george32451
Зарегистрирован: 2014-08-18
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите заставить работать GUI (Tkinter, Python 3.4)

4kpt_II Спасибо большое за помощь, не скажите, как книжечка называется?

Офлайн

#8 Авг. 19, 2014 20:28:39

4kpt_II
От: Харьков
Зарегистрирован: 2013-10-24
Сообщения: 999
Репутация: +  58  -
Профиль   Отправить e-mail  

Помогите заставить работать GUI (Tkinter, Python 3.4)

Python and Tkinter Programming. Книга 2000 года.

Офлайн

#9 Авг. 21, 2014 16:05:50

george32451
Зарегистрирован: 2014-08-18
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите заставить работать GUI (Tkinter, Python 3.4)

4kpt_II Спасибо вам большое! Все сделал, все работает! И последний вопрос в этой теме: как сделать так, чтобы при запуске программы с графическим интерфейсом не открывалась консоль?

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version