2013-05-30 77 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

相关问题