【发布时间】:2021-07-26 22:40:35
【问题描述】:
我正在尝试实现以下行为: 互斥文本框(条目标签),遵循如下规则
- 3 个框中只有两个可以同时输入文本(必须删除内容才能重新启用第三个)
- 填写一个框会禁用一组主题。
- (不需要,很高兴拥有)将鼠标悬停在禁用的文本框上时出现的工具提示,说明它被锁定的原因。
我的想法是在“条目”标签的“命令”属性上设置一个“检查”功能,以便在编辑每个文本框时,代码会检查所有指定的“原因”文本框的值,如果满足某些条件,禁用一组“效果”文本框。
我相信我也得转发声明所有的Entry标签,然后声明功能,然后配置Entry标签具有这个功能,然后将它们打包到屏幕上。
有没有更好的方法来做到这一点?或者至少是一种避免前向声明要求的方式?
谢谢,欢迎随时索取更多信息!
编辑: 这是一个示例实现
entry1 = tk.Entry (window)
entry2 = tk.Entry (window)
def shut_x():
if entry1.get() != "":
entry2.configure(state="disabled")
else:
entry2.configure(state="normal")
entry1.configure(command=shut_x())
canvas1.create_window(650, 140, window=entry1)
canvas1.create_window(650, 340, window=entry2)
【问题讨论】:
-
不清楚你在问什么。你真的只是问是否有更好的方法吗?如果是这样,如果您展示了一个实际的实现,而不仅仅是对实现的描述,那将会有所帮助。另外,“'Entry'标签的'command'属性”是什么意思?条目小部件和标签小部件都没有“命令”属性。
-
我添加了一段代码示例。澄清一下,是的,我问是否有更好的方法,因为这对我来说真的很笨重。此外,“tutorialspoint.com/python/tk_entry.htm”的文档说该条目确实具有命令属性。也许我们正在考虑不同的事情?
-
@Frogglet 将
StringVar添加到条目并跟踪该变量。 -
@Frogglet:文档有误。
-
@BryanOakley 好吧,我之前使用过它并且它正在工作,但不是最佳的,因为它也在标签的创建中运行该功能。无论如何,我使用了 TheLizzard 的解决方案,所以我现在一切都很好:D
标签: python user-interface tkinter dynamic textbox