Я создаю приложение, которое требует ввода от пользователя. В коде есть виджет ввода, и есть кнопка, которая вызывает функцию с вводом одного из виджетов записи в качестве аргумента. Однако всякий раз, когда я печатаю аргумент (содержимое виджета ввода), я получаю пустой список вместо того, что я ввел.functools.partial не передает аргумент Tkinter
#!/usr/bin/env python
import grammar
import shelve
from functools import partial
from Tkinter import *
def call_response(text):
print text
grammar.analyze.analyze(text)
class MainWindow(Tk):
def new_object(self):
main_frame = Frame(self)
bottom_frame = Frame(self)
main_frame.pack()
bottom_frame.pack(side=BOTTOM)
output = Text(main_frame)
output.pack()
input_entry = Entry(bottom_frame, width=50)
input_entry.grid(row=1, column=1)
send_input_button = Button(bottom_frame, text='Chat!', command=partial(
call_response, input_entry.get().split()))
send_input_button.grid(row=1, column=2)
mainloop()
root = MainWindow()
root.new_object()
Кто-нибудь знает, что может быть причиной этого, или что может быть неправильным с моим кодом?
Ах, я вижу, Дело в том, на вопрос, который я задал время назад, мне сказали, чтобы остаться как можно дальше от лямбды, как я возможно мог, так вот почему я хотел, чтобы избежать их использования. http://stackoverflow.com/questions/27996218/how-can-i-execute-more-a-command-based-on-the-button-that-called-it-classes-an –
Использование Python для по крайней мере, до тех пор, пока Алекс Мартелли, я откровенно не рассказываю о нем. Когда вам нужно закрытие, вам нужно закрыть, а затем лямбда просто проще. –
Лично я бы тоже избегал лямбда. Lambdas - прекрасный инструмент для определенных проблем, но они должны использоваться для решения определенной проблемы, а не как стандартная практика IMHO. Я бы создал метод класса, который может вызвать команда. Этот метод может затем получить значение и сделать все, что ему нужно. По моему опыту, использование метода облегчает поддержку и отладку кода. –