【发布时间】:2017-07-20 07:48:39
【问题描述】:
我想先说我已经阅读了docs,但我想我不确定如何使用提供的信息,或者我只是无法看到提供的代码和我的代码。我也在谷歌上搜索了相关问题,但无济于事。我目前关注this tutorial
我已经为我正在开发的一个简单程序制作了一个 tkinter 窗口,但现在我正试图将它放在一个类中并且一切都在走下坡路。问题代码的基本结构如下:
from tkinter import *
class WindowManager(Tk):
def __init__(self, parent):
Tk.__init__(self, parent)
self.parent = parent
# Place items for console log
self.initialize()
def initialize(self):
self.grid()
self.text_item = Text(self, bd=0, bg="black", fg="white", height="15", width="56", )
self.text_item.grid(column=0, row=0)
def access_text(app):
app.initialize.text_item.delete('1.0', END)
def main():
app = WindowManager(None)
app.title("Main Window")
app.geometry("400x250")
app.resizable(0, 0)
app.mainloop()
access_text(app)
if __name__ == "__main__":
main()
现在这只是相关代码的基本结构,以及所有相关的内容。
当窗口关闭时出现错误提示“'function' object has no attribute 'text_item'”
我最好的猜测是,它一般是在尝试对函数做一些事情,而不是访问在相关函数中找到的代码,但我不确定访问这个变量的正确方法是什么。
任何帮助或澄清将不胜感激。感谢您的宝贵时间。
【问题讨论】:
-
我在 python 3.5.2 中运行它,删除了在创建文本的示例中未定义的 bg、fg 和字体,它运行时没有错误。
access_window()未被调用。为什么它有.initialize()?您不想创建新的文本小部件,是吗? -
在 access_window() 部分,我只是忘了把它放在我示例的 main 函数中,我会马上修复它。是的,我正在尝试创建一个新的文本小部件以放置在初始化时,我的问题是在类之外访问所述小部件
-
access_window()中至少有一个错误,您正在使用类而不是实例调用实例方法。 -
您能否将代码更新为引发错误的mcve?
-
目前还不清楚你想用
app.initialize.console_log.delete('1.0', END)线实现什么。也许它应该是app.text_item.delete('1.0', END)行?
标签: python class methods tkinter