Уведомления

Группа в Telegram: @pythonsu

#1 Март 1, 2011 23:03:37

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

Функция и кнопка

А все очень просто оказывается, если все делать изначально правильно, а не через одно место. Советую все же почитать на досуге pdf, ссылку на которую я дал.
Чуть изменю мой пример выше:

from Tkinter import *
root=Tk()

def foo():
label_var.set(ent.get())

label_var=StringVar()

label=Label(root,textvariable=label_var)
label.pack()

ent=Entry(root)
ent.pack()


but=Button(root,text='get',command=foo)
but.pack()

root.mainloop()
По аналогии разберетесь?
Тут я намеренно не стал давать решение по вашему коду с применением bind. C передачей аргументов, если уж так приспичило, можно разобраться, почитав топик, ссылку на который давали выше.


P.S. Если интересно, и здесь можно обойтись без StringVar :)
def foo():
label['text']=ent.get()

label=Label(root)
P.P.S. Хочется именно научить, а не тупо дать ответ на вопрос…



Отредактировано (Март 1, 2011 23:08:57)

Офлайн

#2 Март 1, 2011 23:08:25

sp3
От:
Зарегистрирован: 2010-01-12
Сообщения: 405
Репутация: +  18  -
Профиль   Отправить e-mail  

Функция и кнопка

...

g = IntVar()
g.set(0)
def prog (*arg):
a1 = a.get()
b1 = b.get()
c1 = c.get()
D = (b1*b1) - 4*a1*c1
x1 = -(b1 + math.sqrt(D))/2*a1
x2 = -(b1 - math.sqrt(D))/2*a1
g.set(x1)

knop = Button(tk,
text=k,)
knop.bind("<Button>", prog)
knop.pack()

Label(tk,
textvariable=g,
...
ой, все испортил :rolleyes:



Отредактировано (Март 1, 2011 23:20:13)

Офлайн

#3 Март 1, 2011 23:16:10

OldSkif
От:
Зарегистрирован: 2011-02-25
Сообщения: 32
Репутация: +  0  -
Профиль   Отправить e-mail  

Функция и кнопка

Спасибо вам большое!
Я нашел еще одно решение, но оно опять же “через одно место”
Вот:

a1 = a.get()
b1 = b.get()
c1 = c.get()
g = IntVar()
g.set(0)
def prog(a1, b1, c1) :
D = (b1*b1) - 4*a1*c1
x1 = -(b1 + math.sqrt(D))/2*a1
x2 = -(b1 - math.sqrt(D))/2*a1
g.set(x1)
def prog1(event):
return prog(a1, b1, c1)
knop = Button(tk,
text=k,)
knop.bind("<Button>", prog1)
knop.pack()

Label(tk,
textvariable=g,
Вобщем вставил еще одну функцию, теперь значение стало передаваться только после нажатия)



Офлайн

#4 Март 1, 2011 23:18:35

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

Функция и кнопка

OldSkif
Вобщем вставил еще одну функцию, теперь значение стало передаваться только после нажатия)
Все то, о чем говорили выше как бы бесполезно? Про lambda читали? :)



Офлайн

#5 Март 1, 2011 23:22:34

OldSkif
От:
Зарегистрирован: 2011-02-25
Сообщения: 32
Репутация: +  0  -
Профиль   Отправить e-mail  

Функция и кнопка

Нет, совсем не бесполезно! Теперь буду разбираться с предложенными вариантами.
Очень заинтересовал вариант кода от сп3. Небольшая замена в корне меняет ход событий.
Ваш же уровень еще для меня недостижим, буду работать.
Насчет вашей ссылки на пдф - я с английским не на такой короткой ноге(((
Про лямбда читал, но к стыду своему почти ничего о ней не помню. Тоже буду разбираться.
Еще раз спасибо всем.



Офлайн

#6 Март 1, 2011 23:34:22

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

Функция и кнопка

OldSkif
Ваш же уровень еще для меня недостижим, буду работать.
Спасибо за комплимент, но хочу заметить, что мой вариант проще! Вообще, был удивлен что вы сразу в такие дебри полезли :)



Офлайн

#7 Март 1, 2011 23:37:56

OldSkif
От:
Зарегистрирован: 2011-02-25
Сообщения: 32
Репутация: +  0  -
Профиль   Отправить e-mail  

Функция и кнопка

igor.kaist
Спасибо за комплимент, но хочу заметить, что мой вариант проще! Вообще, был удивлен что вы сразу в такие дебри полезли :)
Возможно, и проще - не спорю.
В смысле - в дебри?



Офлайн

#8 Март 2, 2011 22:27:56

Griffon
От: Ukrain, Zaporozhie
Зарегистрирован: 2009-03-04
Сообщения: 324
Репутация: +  11  -
Профиль   Отправить e-mail  

Функция и кнопка

def prog1(event):
return prog(a1, b1, c1)
knop.bind("<Button>", prog1)
Всётаки рекомендуется почитать ссылки, которые вам дали.
Обязательно Tkinter GUI for Python
И вот это http://python.su/forum/viewtopic.php?pid=60335#p60335
Ссылки на всё это вам давали выше.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version