【发布时间】:2018-03-08 16:30:40
【问题描述】:
我正在用 pycharm 开发一个 python 程序。在我的这行代码下:
rut = Tk()
rut.tk.call('wm', 'iconphoto', rut._w, PhotoImage(file=icon_file))
我收到关于“rut._w”的警告说:
访问一个类的受保护成员 _w
当我按下 ctrl + enter 时,它给了我一个选项:
为字段添加属性
当我点击它时,它会将行更改为:
rut.tk.call('wm', 'iconphoto', rut.w, PhotoImage(file=icon_file))
但我知道这并不是它的全部功能,因为如果我手动更改名称,我会得到:
AttributeError: '_tkinter.tkapp' 对象没有属性 'w'
那么这里发生了什么? _w 是什么意思,.w 是什么意思?为字段添加属性是什么意思?它实际上是如何完成的?
请注意,Tk 是从 tkinter 包中导入的,它不在我的项目文件中,所以我想 pycharm 无法编辑它。
【问题讨论】:
-
rut是Tk的一个实例。 PyCharm 似乎在Tk类的源代码中为Tk实例定义了一个w属性。 -
Tk 是从 tkinter 包中导入的,它不在我的项目文件中,所以我想 pycharm 无法编辑它。(对不起,我应该在问题中澄清这一点。我现在会)@OluwafemiSule跨度>
-
Pycharm 将属性更改为
w时,您的应用程序是否运行成功? AFAIK,TK doesn't have awattribute defined 如果您的应用程序运行成功,您一定知道 Pycharm 正在对其进行猴子修补。请参阅我的回答,了解如何避免使用私有属性 -
@OluwafemiSule 是的,它运行成功。
标签: python tkinter pycharm protected