Форум сайта python.su
0
Добрый вечер!
Сейчас изучаю “tkinter” по этому поводу вопрос, вот простенькая программа:
from tkinter import * root = Tk() root.title('Fecha') root.minsize(216, 300) yy=10 def event1(a): a= a+1 lb_y.config(text=a) return a fr_kal=Frame(root, bg='DeepSkyBlue4', bd=1, relief=RIDGE) fr_kal.pack(expand=YES, fill=BOTH) lb_y=Label(fr_kal, font='FreeMono 10 bold', bg='DeepSkyBlue4', fg='white') lb_y.place(x=85, y=1) but_ok=Button(fr_kal,text='OK', cursor='hand2', bg='cyan') but_ok.place(x=82, y=260, width=50, height=24) but_ok.bind('<Button-1>', lambda event: event1(yy)) lb_y.config(text=yy) root.mainloop()
Офлайн
24
Используйте ООП. Сразу все станет проще и понятнее.
from tkinter import Tk, Button, Label, IntVar class App(Tk): def __init__(self): super().__init__() self.value = IntVar() self.value.set(0) self.button = Button(self, command=lambda: self.value.set(self.value.get() + 1)) self.button.pack() self.value_display = Label(self, textvariable=self.value) self.value_display.pack() App().mainloop()
Отредактировано ayb (Янв. 17, 2016 20:29:32)
Офлайн
0
Так то да, но меня интересует как при срабатывании какого либо эвента вызывать функцию и потом получить результат работы этой функции. Максимум что накопал в инете это как передавать параметры, а вот как получить результат нигде инфы нет
Офлайн
49
Что значит “получить результат”? Поясните на примере GUI.
Например: Есть кнопка. Я на нее нажимаю и выполняется функция, а ее результат ….
Офлайн
0
from tkinter import * root = Tk() root.title('Fecha') root.minsize(216, 300) #к примену в программе имеется одна переменная которую будут использовать различные функции yy=10 def event1(a): #эта фукнция должна делать проверку, икрементировать и вызывать другую функцию if a<20: a +=1 show1(a) return a def event2(a):#эта фукнция должна делать проверку, декрементировать и вызывать другую функцию if a>1: a-=1 show1(a) return a def show1(a): lb_y.config(text=a) fr_kal=Frame(root, bg='DeepSkyBlue4', bd=1, relief=RIDGE) fr_kal.pack(expand=YES, fill=BOTH) lb_y=Label(fr_kal, font='FreeMono 10 bold', bg='DeepSkyBlue4', fg='white') lb_y.place(x=85, y=1) but_1=Button(fr_kal,text='+1', cursor='hand2', bg='cyan') but_1.place(x=82, y=220, width=50, height=24) but_2=Button(fr_kal,text='-1', cursor='hand2', bg='cyan') but_2.place(x=82, y=260, width=50, height=24) but_1.bind('<Button-1>', lambda event: event1(yy)) but_2.bind('<Button-1>', lambda event: event2(yy)) lb_y.config(text=yy) root.mainloop()
Офлайн
49
1. Использование глобальных переменных это чистое зло.
2. Event душить не стоит все-же. Он многое чего делает полезного.
3. from tkinter import * делать нельзя никогда.
По Вашему вопросу. Есть var переменные (StringVar, IntVar и т.п.). Создаете и передаете.
Или можно для упрощения использовать mutable тип (например список). В этом случае Вы просто будете передавать ссылку на объект, а объект будет один, но при этом обновление всех мест, где объект отображается ложиться на Ваши плечи 
Офлайн
0
4kpt_IVПо этому хотел узнать другой способ
Использование глобальных переменных это чистое зло.

4kpt_IVЭто я знаю, читал, только пробные программки проще так писать
3. from tkinter import * делать нельзя никогда.
Офлайн
49
Quazar
Это я знаю, читал, только пробные программки проще так писать
Офлайн
0
Спасибо, учту….
Офлайн