When using _setit I get the following warning in PyCharm: enter image description here

为什么我要用_setit

我想在下拉列表中动态添加或删除选项.为此,我从我定义的tk.OptionMenu中提取了tk.Menu对象.I add_command到这个tk.Menu个对象.问题是,当我单击下拉列表时,该元素未被选中.

因此,我按如下方式使用受保护成员_setit: MY_MENU.add_command(label=LABEL, command=tk._setit(MY_STRING_VAR, LABEL)).MY_STRING_VAR显然是与前面定义的tk.OptionMenu对象相关联的tk.StringVar.

这非常有效,但我不允许在我的项目中使用任何# noqa,我也不允许任何弱警告.所以有两个问题:

  • 使用"受保护的模块成员"真的有问题吗?不管那是什么意思?
  • 有什么解决办法吗?我是不是做错了?

推荐答案

一般来说,不应该调用对象的私有函数.由于是私密的,它可能会在future 的任何tkinter版本中发生变化.在现实中,它可能不会,但这仍然是一个糟糕的做法.

简单的解决方案是创建您自己的_setit实现.

Python相关问答推荐

Python:根据创建时间合并两个收件箱

合并其中一个具有重叠范围的两个框架的最佳方法是什么?

Pandas使用过滤器映射多列

pandas DataFrame中类型转换混乱

如何使用Tkinter创建两个高度相同的框架(顶部和底部)?

使用regex分析具有特定字符的字符串(如果它们存在)

opencv Python稳定的图标识别

跟踪我已从数组中 Select 的样本的最有效方法

计算所有前面行(当前行)中列的值

优化在numpy数组中非零值周围创建缓冲区的函数的性能

如何让 turtle 通过点击和拖动来绘制?

通过优化空间在Python中的饼图中添加标签

TARete错误:类型对象任务没有属性模型'

海运图:调整行和列标签

两个pandas的平均值按元素的结果串接元素.为什么?

使用setuptools pyproject.toml和自定义目录树构建PyPi包

不允许访问非IPM文件夹

Pandas Data Wrangling/Dataframe Assignment

在Docker容器(Alpine)上运行的Python应用程序中读取. accdb数据库

Odoo16:模板中使用的docs变量在哪里定义?