Найти - Пользователи
Полная версия: Tkinter поле ввода Entry
Начало » GUI » Tkinter поле ввода Entry
1
anton200583
Подскажите как забрать текст из функции (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 из функции
Voroshek
Привет, я пишу на третьем (ты, так понимаю, на втором), поэтому кое-что переделал, но вообще вот:
#!/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)
При запуске в консоли, когда закроешь окно, возвращает то, что ввёл в строке.
* * *
А вообще вопросы по гуям задаются здесь http://python.su/forum/viewforum.php?id=18
anton200583
Voroshek
А вообще вопросы по гуям задаются здесь http://python.su/forum/viewforum.php?id=18
Виноват исправлюсь.

Спасибо САНСЕЙ !!!!! Все получилось!!!!(двое суток мучился а все так просто оказалось))
Griffon
Надоедают вопросы о питоне в ветке о графических интерфейсах.
Voroshek
Griffon, вот кстати, если в приведённом выше примере объявить глобальную переменную put_dir = None, а вместо global использовать return, то ни фига, print возвращает None, это как?return не работает?
Griffon
Ну что вы пытаетесь сделать. Это окно. Оно не работает последовательно. return конечно же работает. Но вот вам ещё пару вопросов к вашим:
Откуда вы эту функцию вызываете?
Куда вы возвращаете значение?
Как вы обрабатываете значение которое вернула функция?
И самое главное. Переменная put_dir в глобальной области видимости, и переменная в локальной области видимости функции это немного разные вещи. Они могут быть одним и тем же, при определённых обстоятельствах, но так делать нельзя. Возьмите книжку, и просто почитайте. Поймите что куда передаётся, что на что ссылается, и будет вам счастье.
py.user.next
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()
построено по примеру, взятому из исходников третьего питона, скачанных на python.org
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB