2015-08-20 2 views
1

Я строю графический интерфейс python, и там у меня есть 2 текстовых поля.Мне нужно отправить данные в скрипт с кнопкой отправки

Я хочу создать кнопку отправки, которая возьмет данные из этих 2 текстовых полей и отправит их в start(save_place, website_url).

Это то, что я до сих пор:

from Tkinter import * 

def start(save_place, website_url): 
    #something 

app = Tk() 
top_app = Frame(app) 
top_app.pack() 
save_location = Entry(top_app, width=20) 
url = Entry(top_app, width=20) 
save_location.grid(sticky=W, row=0) 
url.grid(sticky=W, row=1) 
save_place = save_location.get("1.0", END) 
website_url = url.get("1.0", END) 
button_start = Button(top_app, text="Start", fg="green", command=start(save_place,website_url)) 
button_start.grid(sticky=W, row=2, pady=20) 
app.mainloop() 

Я также попытался это:

from Tkinter import * 

def start(): 
    save_place = save_loc.get() 
    website_url = urls.get() 
    print (save_place + " " + website_url) 

app = Tk() 
top_app = Frame(app) 
top_app.pack() 
save_loc = StringVar() 
save_location = Entry(top_app, textvariable=save_loc, width=85) 
urls = StringVar() 
url = Entry(top_app, textvariable=urls, width=85) 
button_start = Button(top_app, text="Start", fg="green", command=start) 
button_start.grid(sticky=W, row=2, pady=20) 
app.mainloop() 

И это не сработало.

Как я могу заставить этот скрипт отправлять входные данные в текстовые поля функции?

Спасибо всем помощникам :)

ответ

1

Как уже упоминалось в предыдущем ответе «о том, как вызвать функцию», вы просто положить command = start и положить save_place = save_location.get() в функции запуска, однако вы можете использовать save_location = Entry(top_app, width=20), таким образом, общее prg:

from Tkinter import * 
def start(): 
    #something 
    save_place = save_location.get() 
    website_url = url.get() 
    print save_place,website_url 
app = Tk() 
top_app = Frame(app) 
top_app.pack() 
save_location = Entry(top_app, width=20) 
url = Entry(top_app, width=20) 
save_location.grid(sticky=W, row=0) 
url.grid(sticky=W, row=1) 
button_start = Button(top_app, text="Start", fg="green", command=start) 
button_start.grid(sticky=W, row=2, pady=20) 
app.mainloop() 
+0

Не работал :( – Mike

+0

попробуйте с новым редактированием, что у вас получилось, когда вы запустите его? – tparadisez

+0

@RonHalfon add app .mainloop() в конце, как показано в моем редактировании – tparadisez

1

command=start(save_place,website_url) не делать то, что вы думаете его делать. Он присваивает результат вызова функции команде. (Что, вероятно, None). Свяжите ваши Entry коробки для StringVar как:

location = StringVar() 
Entry(top_app, textvariable=location, width=20) 

Затем назначить вызов функции с параметром командной помощью command = start. Внутри функции вы можете получить доступ к значению в Entry, используя location.get(). Для того, чтобы установить значение использовать соответствующий метод location.set(value)

+0

Это не сработало. Посмотрите на мое редактирование. Возможно, я сделал что-то неправильно – Mike

+0

Ваша функция должна быть определена без параметров. ie- 'def start():' Я тестировал его локально с этим изменением и без 'font =', потому что у меня нет этого шрифта здесь – theB

+0

OOPS. В моем коде это def start(), но я не набрал его здесь извините. Все еще не работает – Mike

Смежные вопросы