【问题标题】:Python prints numbers instead of wordsPython 打印数字而不是单词
【发布时间】:2013-05-30 13:44:52
【问题描述】:

我正在尝试制作一个 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 

有人能解释一下这个问题以及我如何解决它吗?

【问题讨论】:

  • App.Show()(原版)应该完成什么?
  • 为什么要用实例上的按钮替换 App.Show()? (self.Show = Button(...))。 Button 动作现在指向它自己。
  • @MartijnPieters:实际上,命令是在构造函数调用期间设置的,即使名称被替换,旧方法也不会被处理掉。但我同意这是不好的做法。
  • @IgnacioVazquez-Abrams:它被遮蔽了,因此无法从self 访问类方法。我在简化。 :-)
  • 它没有被遮蔽,而是被完全替换。但不是在将引用传递给 Button 构造函数之前。

标签: python python-3.x tkinter


【解决方案1】:
def Show(self):
    Label(self.text_write.get())

如果您将“标签”替换为“打印”,它会起作用(如将值打印到标准输出)

代码按原样执行的操作是创建一个以字符串为父级的新标签(当它想要一个窗口作为父级时),然后不将该标签附加到任何东西上。

您可能希望在 init 中创建 Label 对象并将其附加到窗口,然后在 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()
    

    【讨论】:

    • 我把我的代码改成了这个,但是出现了一个错误消息:标签实例没有属性'set'是否可以解决这个问题
    • @user2436777 哎呀!对不起!我实际上并没有检查代码。尝试设置标签text 选项。我编辑了我的答案。
    • 感谢您和所有帮助该计划的人,该计划现在正在运行。
    猜你喜欢
    • 2018-11-21
    • 1970-01-01
    • 1970-01-01
    • 2015-09-06
    • 2011-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-20
    相关资源
    最近更新 更多