【问题标题】:TypeError: must be str or None, not FrameTypeError:必须是 str 或 None,而不是 Frame
【发布时间】:2016-04-10 16:33:49
【问题描述】:

首次基于senddex tkinter系列使用OOP方式开发tkinter程序。老实说,我不知道这里的错误是什么意思。

错误将我引导至:

  File "C:\Users\Ash\Dropbox\Programming\Python\WorldManager PY\WorldManager.py", line 59, in __init__
tk.Tk.__init__(self, *args, **kwargs)
File "C:\Python34\lib\tkinter\__init__.py", line 1867, in __init__
self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)
TypeError: must be str or None, not Frame

我使用的代码是here

编辑:虽然代码显示第 59 行,但错误在第 46 行。我在粘贴时从代码上方取出了几个 cmets。

【问题讨论】:

  • 请将您的代码放入问题本身,如有必要,请先编写minimal reproducible example 以使其足够短。
  • 该错误并非来自您链接到的代码。第 59 行不调用tk.Tk.__init__(...)
  • 在Tk.__init__ 调用之前添加print(args, kwargs),这样您就可以看到实际传递了什么,特别是如何传递一个Frame。
  • @BryanOakley 你是什么意思?
  • 错误消息说错误在第 59 行,但代码中的第 59 行不可能产生该错误,因为第 59 行是注释。

标签: python python-3.x tkinter


【解决方案1】:

问题出在这里:

class frmWelcome(tk.Frame):
    def __init__(self, *args, **kwargs):
        #initialise tkinter
        tk.Tk.__init__(self, *args, **kwargs)

你是从tk.Frame继承的,但你正在调用tk.Tk.__init__你需要调用tk.Frame.__init__

【讨论】:

  • 在代码中进行更改后,我得到一个不同的错误。 tkinter.TclError:未知选项“-screen”
猜你喜欢
  • 2018-11-25
  • 2023-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-31
  • 2017-01-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多