Форум сайта python.su
Подскажите как забрать текст из функции (start) ?
#!/usr/bin/python
# -*- coding: utf-8 -*-
from Tkinter import *
def start(event):
put_dir=ent1.get()
return put_dir #???
root = Tk()
root.title(u'Удаление Файлов')
root.geometry(newGeometry="300x200+500+250")
lab = Label(root, text=u"Введите адрес папки или дирректории.", font="Arial 10")
ent1 = Entry(root,width=20,bd=3)
lab.pack()
ent1.pack()
button = Button(root,text=u'OK',width=9)
button.bind("<Button-1>", start)
button.pack()
root.mainloop()
put_dir2=start()#как забрать значение put_dir из функции
Отредактировано (Май 29, 2011 03:34:12)
Офлайн
Привет, я пишу на третьем (ты, так понимаю, на втором), поэтому кое-что переделал, но вообще вот:
#!/usr/bin/python
# -*- coding: utf-8 -*-
from tkinter import *
def start(event):
put_dir=ent1.get()
global put_dir
root = Tk()
root.title('Удаление Файлов')
root.geometry(newGeometry="300x200+500+250")
lab = Label(root, text="Введите адрес папки или дирректории.", font="Arial 10")
ent1 = Entry(root,width=20,bd=3)
lab.pack()
ent1.pack()
button = Button(root,text='OK',width=9)
button.bind("<Button-1>", start)
button.pack()
root.mainloop()
print(put_dir)
Отредактировано (Май 29, 2011 06:35:05)
Офлайн
VoroshekВиноват исправлюсь.
А вообще вопросы по гуям задаются здесь http://python.su/forum/viewforum.php?id=18
Офлайн
Надоедают вопросы о питоне в ветке о графических интерфейсах.
Офлайн
Griffon, вот кстати, если в приведённом выше примере объявить глобальную переменную put_dir = None, а вместо global использовать return, то ни фига, print возвращает None, это как?return не работает?
Офлайн
Ну что вы пытаетесь сделать. Это окно. Оно не работает последовательно. return конечно же работает. Но вот вам ещё пару вопросов к вашим:
Откуда вы эту функцию вызываете?
Куда вы возвращаете значение?
Как вы обрабатываете значение которое вернула функция?
И самое главное. Переменная put_dir в глобальной области видимости, и переменная в локальной области видимости функции это немного разные вещи. Они могут быть одним и тем же, при определённых обстоятельствах, но так делать нельзя. Возьмите книжку, и просто почитайте. Поймите что куда передаётся, что на что ссылается, и будет вам счастье.
Офлайн
import tkinter
from tkinter.constants import *
class App(tkinter.Frame):
def __init__(self, master=None):
tkinter.Frame.__init__(self, master)
self.pack(fill=BOTH)
self.create_widgets()
def create_widgets(self):
self.var = tkinter.StringVar()
self.var.set('???')
self.label = tkinter.Label(self, text='Enter:')
self.label.pack(side=LEFT)
self.entry = tkinter.Entry(self, textvariable=self.var)
self.entry.pack(side=LEFT)
self.button_ok = tkinter.Button(self, text='Ok', command=self.press_button_ok)
self.button_ok.pack(side=LEFT)
self.button_quit = tkinter.Button(self, text='Quit', command=self.master.destroy)
self.button_quit.pack(side=LEFT)
# второй фрейм для правильного выравнивания
self.f = tkinter.Frame(self.master)
self.f.pack(fill=BOTH)
self.f.v = tkinter.StringVar()
self.f.l = tkinter.Label(self.f, textvariable=self.f.v)
self.f.l.pack(fill=X)
def press_button_ok(self):
print(repr(self.var.get()))
self.f.v.set(self.var.get())
if __name__ == '__main__':
root = App()
root.master.title('Window')
root.master.geometry('300x70+500+500')
root.mainloop()
Отредактировано (Июнь 8, 2011 01:26:42)
Офлайн