Python - “为字段添加属性”是做什么的?

时间:2017-09-27 08:57:23

标签: python tkinter pycharm protected

我正在pycharm中开发一个python程序。在我的代码的这一行:

rut = Tk()
rut.tk.call('wm', 'iconphoto', rut._w, PhotoImage(file=icon_file))

我在'rut._w'上发出警告说:

  

访问类

的受保护成员_w

当我按ctrl +输入时,它给了我一个选项:

  

为字段添加属性

当我点击它时,它会将行更改为:

rut.tk.call('wm', 'iconphoto', rut.w, PhotoImage(file=icon_file))

但我知道这不是它的全部,因为如果我手动更改名称,我会得到:

  

AttributeError:'_ tkinter.tkapp'对象没有属性'w'

那么这里发生了什么? _w是什么意思,什么是.w以及为字段添加属性意味着什么?它实际上是如何完成的?

请注意,Tk是从tkinter包导入的,它不在我的项目文件中,因此我认为pycharm无法编辑它。

1 个答案:

答案 0 :(得分:2)

__str__ method defined for Tk returns self._w 它是私有财产的吸气剂。

您可以使用:

rut.tk.call('wm', 'iconphoto', str(rut), PhotoImage(file=icon_file))

<小时/> Pycharm正在做的是将其添加到Tkinter类。这很糟糕,因为您的应用程序可以保证在您的计算机上运行,​​但不能在Tkinker类没有修补的其他计算机上运行。

Cmd + Click的{​​{1}}上

Ctrl + ClickTk() (取决于您的平台)以打开课程定义。你会在最后看到这个。

rut = Tk()