Уведомления

Группа в Telegram: @pythonsu

#1 Май 29, 2011 02:11:20

anton200583
От:
Зарегистрирован: 2011-03-14
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Tkinter поле ввода Entry

Подскажите как забрать текст из функции (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)

Офлайн

#2 Май 29, 2011 06:28:31

Voroshek
От:
Зарегистрирован: 2011-03-11
Сообщения: 54
Репутация: +  0  -
Профиль   Отправить e-mail  

Tkinter поле ввода Entry

Привет, я пишу на третьем (ты, так понимаю, на втором), поэтому кое-что переделал, но вообще вот:

#!/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



python3 openSUSE-43Leap

Отредактировано (Май 29, 2011 06:35:05)

Офлайн

#3 Май 29, 2011 07:38:20

anton200583
От:
Зарегистрирован: 2011-03-14
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Tkinter поле ввода Entry

Voroshek
А вообще вопросы по гуям задаются здесь http://python.su/forum/viewforum.php?id=18
Виноват исправлюсь.

Спасибо САНСЕЙ !!!!! Все получилось!!!!(двое суток мучился а все так просто оказалось))



Офлайн

#4 Май 29, 2011 23:53:51

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

Tkinter поле ввода Entry

Надоедают вопросы о питоне в ветке о графических интерфейсах.



Офлайн

#5 Май 30, 2011 10:25:00

Voroshek
От:
Зарегистрирован: 2011-03-11
Сообщения: 54
Репутация: +  0  -
Профиль   Отправить e-mail  

Tkinter поле ввода Entry

Griffon, вот кстати, если в приведённом выше примере объявить глобальную переменную put_dir = None, а вместо global использовать return, то ни фига, print возвращает None, это как?return не работает?



python3 openSUSE-43Leap

Офлайн

#6 Май 31, 2011 07:11:29

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

Tkinter поле ввода Entry

Ну что вы пытаетесь сделать. Это окно. Оно не работает последовательно. return конечно же работает. Но вот вам ещё пару вопросов к вашим:
Откуда вы эту функцию вызываете?
Куда вы возвращаете значение?
Как вы обрабатываете значение которое вернула функция?
И самое главное. Переменная put_dir в глобальной области видимости, и переменная в локальной области видимости функции это немного разные вещи. Они могут быть одним и тем же, при определённых обстоятельствах, но так делать нельзя. Возьмите книжку, и просто почитайте. Поймите что куда передаётся, что на что ссылается, и будет вам счастье.



Офлайн

#7 Июнь 6, 2011 06:57:34

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9726
Репутация: +  843  -
Профиль   Отправить e-mail  

Tkinter поле ввода Entry

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



Отредактировано (Июнь 8, 2011 01:26:42)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version