2013-08-13 2 views
-1
from Tkinter import * 

master = Tk() 

def callback(): 
    print "click!" 

b = Button(master, text="OK", command=callback) 
b.pack() 

mainloop() 

Прямо сейчас это работает в iPython отпечатков "click!" на консоль. Если бы я хотел, чтобы результат скрипта или функции появлялся в окне графического интерфейса пользователя, под кнопкой, как я могу это сделать? Нужно ли выделять размер окна в расширенном режиме?привязка события tkinter к кнопке

Редактировать: Функция, которую я хочу вызвать, на самом деле сложнее, чем обратный вызов выше. Когда я запускаю следующий код, вместо печати clusOne.head() печатает

<function centroid at 0x2cf3410> 

к выходу коробки. Я хотел бы иметь возможность печатать строки данных, полученных в результате этой функции, а не адрес указателя.

master = Tk() 


# The output box prints an address (pointer) as a result of running this function. 
#I would like to see the output in the box. 

df=pd.read_csv('8162013.csv') 
df=df.set_index('date1') 

# Initialize the centroid. 
cen1=df.mean() 
v=ny.random.randn()+10 
cen2=df.mean()-v 
train=df[0:1615] 


def centroid(train,cen1,cen2): 

    for i in range(0,3): 

    # Sum of squares. Results in a series containing 'date' and 'num' 
    sorted1=((train-cen1)**2).sum(1) 
    sorted2=((train-cen2)**2).sum(1) 

    # This makes a list of the cluster1 and cluster2 
    a=[train.ix[i] for i in train.index if sorted1[i]<sorted2[i]] 
    b=[train.ix[i] for i in train.index if sorted1[i]>=sorted2[i]] 

    # Back to a dataframe... 
    clusOne=pd.DataFrame(a,columns=['ES','US','GC']) 
    clusTwo=pd.DataFrame(b,columns=['ES','US','GC']) 

# Update the centroid. 
    cen1=clusOne.mean() 
    cen2=clusTwo.mean() 

    print clusOne.head() 
    print "I'm computing your centroid." 




def callback(): 
    listbox.insert(END, centroid) 

    b = Button(master, text="Cluster", command=callback) 
    listbox = Listbox(master) 
    b.pack() 
    listbox.pack() 

    mainloop() 

ответ

0

Вы можете создать окно списка Tkinter и добавить текст к нему каждый раз, когда кто-то нажимает на кнопку:

from Tkinter import * 

master = Tk() 

def callback(): 
    listbox.insert(END, "Click!") 

b = Button(master, text="OK", command=callback) 
listbox = Listbox(master) 
b.pack() 
listbox.pack() 

mainloop() 
+0

Спасибо, фактические функции мне нужно, чтобы увидеть результаты не показывают его в выходной ящик. Мысли? –

+0

Когда вы говорите окно вывода, вы имеете в виду список? Я уверен, что ваша проблема в том, что вам нужно ** называть ** ваш «центроид», а не просто ссылаться на него (не забудьте указать его параметры). –

+0

Предположим, что функция не имеет параметров, я полагаю, вы имеете в виду, что она должна быть командой = callback()? (т. е. скобки). В этом примере в разделе «Использование функций» они не передают обратный вызов() для команды в функции кнопки. –

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