1
A
回答
1
当我需要独特的小部件的名称,我用的是这样的:
variable sequencecounter 0; # Don't touch outside this code!
proc unique {{parent ""}} {
variable sequencecounter
while {[winfo exists [set w $parent.w$sequencecounter]]} {
incr sequencecounter
}
return $w
}
这是保证返回一个不存在窗口小部件名称。 (Tk保证运行单线程,所以你知道没有讨厌的竞态条件。)像这样使用它:
set top [toplevel [unique]]
set btn [button [unique $top] -text "Hi" -command { exit }]
pack $btn
1
有可能是做一些华丽的方式,但对我来说,当我需要独特的名字,我只构成一个出时间数据,像
set systemTime [clock seconds];
set myname [concat [clock format $systemTime -format %H%M%S] ".myext"]
等等,等等有很多不同的格式化可能性。
这不是优雅的,但我有它的工作在我的东西,它是有用的,也如果你需要保持一定的轨道。
+0
如果你在同一秒内生成多个名字,这很可能会中断如果你正在这样做来生成窗口路径名。 – 2012-01-15 20:26:48
+0
这是真的。就我而言,我会做一些进一步的检查,以确保它在最后附加一些额外的数据(如果有必要),以确保它更独特。如果您需要以“用户”速度创建独特的名称(例如,gui),但是如果您让它们以“程序”速度运行(例如,循环等),则我认为它非常方便 – JasonBourne 2012-01-16 05:25:27
相关问题
- 1. Tk窗口部件/窗口路径名的访问控件
- 2. tcl/tk按钮或顶层路径名约定
- 3. 如何从TK顶层窗口返回值?
- 4. 生成唯一名称?
- 5. 的Tcl/Tk:如何销毁根窗口时关闭顶层窗口
- 6. 如何生成唯一的文件名或路径?
- 7. 如何为每个JSON值生成唯一名称
- 8. Windows IupLUA,iupalarm - 如何使它成为最顶层的窗口?
- 9. 在Ruby中如何使用tk funktion“tkwait窗口名称”?
- 10. 如何使窗口绝对最顶层?
- 11. 配售窗口后,顶层窗口
- 12. 透明顶层窗口
- 13. C#最顶层窗口
- 14. 如何获取python中最顶层(入口)脚本的名称?
- 15. Tk的当前获取窗口路径焦点
- 16. Rails:如何生成路径?
- 17. 为测试生成唯一模式名称
- 18. 为PrimeFaces remoteCommand生成并使用唯一的名称
- 19. 在VS2008中显示解决方案路径窗口名称
- 20. 如何为options_from_collection_for_select中的每个选项动态生成唯一的名称?
- 21. 如何使窗口最顶层只有一次
- 22. 找到给定输入的唯一路径名称
- 23. 使JVM对话框成为原生顶级窗口的子窗口
- 24. 如何为django模型生成唯一的文件名.FileField
- 25. 生成唯一的临时文件路径
- 26. 如何关闭Perl/Tk中的窗口?
- 27. 获取生成文档的名称和路径
- 28. 使Toplevel窗口跟随根Tk窗口
- 29. 我如何随机生成一个唯一的,未使用的对象名称
- 30. NHibernate的SchemaExport:如何生成一个有意义的唯一键名称?
但请注意这会创建一个_subtle_内存泄漏,这是widget名称本身的独特组件。是的,这听起来很疯狂,但它是真实的,如果你有一个长时间运行的程序,随着时间的推移创建许多小部件,这可能是一个问题。 (所有其他创建独特名称的方案也会有相同的泄漏问题,因为一些奇怪的原因,Tk实习路径名组件!) – 2012-01-15 22:12:09