Python GUI - 将文本插入文本框

时间:2013-08-10 06:05:50

标签: python user-interface python-3.x tkinter

我刚进入Python GUI并且我正在测试不同的东西,因为这似乎可以帮助我学习更容易(试错)。我正在尝试的一件事是从不同的类插入一条消息。我可以诚实地说,我不知道我会用它做什么,但我只是为了尝试而尝试它。

# Hello World
# Displays "Hello World!" in a text box.

from tkinter import *

class myClass(object):
    def myMethod():
        print("Hello World!")

class Application(Frame):
    """ GUI application which can reveal the secret of longevity. """
    def __init__ (self, master):
        super(Application, self).__init__(master)
        self.grid()
        self.createWidgets()

    def createWidgets(self):
        # Create a text box
        self.txtBox = Text(self, width = 300, height = 300, wrap = WORD)
        self.txtBox.grid(row = 0, column = 0, sticky = W)

        # display message
        message = myClass.myMethod
        self.txtBox.insert(0.0, message)

# main
root = Tk()
root.title("My Title")
root.geometry("500x500")

app = Application(root)

root.mainloop()

当我运行.py文件时,我得到了GUI,然后是一个显示<function myClass.myMethod at 0x0000000002A1C6A8>的框 - 如果我没有弄错,这意味着myMethod存储在内存中。

所以我用message = myClass.myMethod()认为这会输出“Hello World!” - 而是我得到一个错误。起初它是对象的东西。 init 不接受参数或类似的东西(道歉,因为我无法重新创建错误) - 现在我得到{{1} }

这可能是“Hello World!”从另一个类,在GUI文本框中打印?

另外,当我查看代码时,我很好奇。 tkinter.TclError: wrong # args: should be "43128536.43105360 insert index chars ?tagList chars tagList...?的目的是什么?当我没有它时,我得到一个空白的GUI。但是,我没有看到它实际上调用app除了将其设置为app = Application(root)以外的任何其他内容。

1 个答案:

答案 0 :(得分:1)

您正在将功能本身添加到文本框中。调用函数并使用它的返回值。

    message = myClass.myMethod()
    self.txtBox.insert(1.0, message)

myClass需要修改。返回字符串而不是打印它。

class myClass(object):
    def myMethod():
        return "Hello World!"