2013-05-30 106 views
0

我試圖做一個Tkinter程序來顯示你輸入的內容,但是我在IDLE shell中得到了一堆數字。Python打印數字而不是文字

我的程序:

from Tkinter import * 

class App: 
    def __init__(self, master): 

    frame = Frame(master) 
    frame.pack() 

    self.text_write = Entry(frame) 
    self.text_write.pack() 

    self.Show = Button(frame, text='Show', command=self.Show) 
    self.Show.pack(side=RIGHT) 

    def Show(self): 
     Label(self.text_write.get()) 

root = Tk() 

app = App(root) 

root.mainloop() 

而是文本被顯示。數字出現在我的IDLE外殼中,例如:

.4334975024 
.4334975600 
.4334975672 
.4334975816 
.4334975960 
.4334976104 
.4334976248 
.4334976392 
.4334976536 

有人請解釋問題以及我如何修復它。

+0

什麼是'App.Show()'(原來的)應該完成的? –

+1

你爲什麼用實例上的按鈕替換'App.Show()'? ('self.Show = Button(...)')。 'Button'動作現在指向它自己。 –

+0

@MartijnPieters:實際上,該命令是在構造函數調用期間設置的,即使名稱被替換,舊方法也不會被處理。但我同意這是不好的做法。 –

回答

3
def Show(self): 
    Label(self.text_write.get()) 

如果用「打印」替換「標籤」它的工作原理(如,打印值到標準輸出)

的代碼做什麼的,是爲創建一個新的標籤與字符串作爲父母(當它想要一個窗口作爲父母),然後不附加該標籤的任何東西。

您可能想要創建Label對象並將其附加到init的窗口中,然後更新Show()中的標籤值?

2

試試這個:

from Tkinter import * 

class App: 
    def __init__(self, master): 

    frame = Frame(master) 
    frame.pack() 

    self.text_write = Entry(frame) 
    self.text_write.pack() 

    # rename the show button because you gave a member function the same name 
    self.show_button = Button(frame, text='Show', command=self.Show) 
    self.show_button.pack(side=RIGHT) 

    # create label to display entered text 
    self.display = Label(frame, text='') 
    self.display.pack(side=BOTTOM) 

    def Show(self): 
     # print text to the standard output 
     print self.text_write.get() 
     # show text on label 
     self.display['text'] = self.text_write.get() 

root = Tk() 

app = App(root) 

root.mainloop() 
+0

我改變了我的代碼,但是出現了一個錯誤信息:標籤實例沒有屬性'set'是否可以修復這個 – user2436777

+0

@ user2436777哎呀!抱歉!我沒有真正檢查代碼。嘗試設置標籤「文本」選項。我編輯了我的答案。 –

+0

謝謝你,幫助你的所有其他幫助這個計劃的人現在都在工作。 – user2436777

相關問題