我正在尝试创建一个Tkinter程序来显示你输入的内容,但我在IDLE shell中得到了一堆数字。
我的节目:
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 shell中,例如:
.4334975024
.4334975600
.4334975672
.4334975816
.4334975960
.4334976104
.4334976248
.4334976392
.4334976536
请有人解释这个问题以及如何解决它。
答案 0 :(得分:3)
def Show(self):
Label(self.text_write.get())
如果您更换"标签"用" print"它的工作原理(如,将值打印到stdout)
代码的作用是创建一个新的标签,其中字符串作为父级(当它想要一个窗口作为父级时),然后不会将该标签附加到任何东西。
您可能想要创建Label对象并将其附加到 init 中的窗口,然后更新Show()中的标签值?
答案 1 :(得分: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()