4

我正在使用TkinterPython 2.6编程2.7图形用户界面。

这些用户界面包含用于打开文件和保存tkFileDialog模块数据的对话框。我想调整对话框并添加一些进一步的条目小部件,例如让用户留下评论。

有没有办法这样做?

似乎文件对话框是直接取自操作系统的。Tkinter它们派生自模块中的 Dialog 类并tkCommonDialog调用tk.call("tk_getSaveFile")框架小部件的方法(在本例中用于保存数据)。

我找不到这个方法是在哪里定义的。

4

2 回答 2

4

call方法在 中定义_tkinter.c,但是对于您的特定任务没有什么有趣的。它只是调用一个 Tcl 命令,该命令tk_getSaveFile完成所有工作。

是的,当操作系统上有本机文件对话框时,使用tk_getSaveFile它们(例如GetSaveFileName在 Windows 上使用)。可以在那里添加小部件,但不能不篡改 Tk 的 C 源。如果您确定您的目标使用非本机 Tk 对话框,您可以通过::tk::dialog::file::从 Tk 中破解过程(请参阅 参考资料library/tkfbox.tcl)向其小部件层次结构添加一些内容。

我宁愿采用tk_getSaveFile 的替代实现,用纯 Tcl/Tk 编写,从不使用 OS 工具。这样,我们可以确保它的布局对于所有操作系统都是相同的,并且不会随着新版本的 Tk 突然改变。围绕它为 python 提供一个方便的 API 仍然远非易事,但至少,这是可能的。

于 2013-02-04T12:47:00.210 回答
1

我不得不摆脱 canvasx/y 声明。该行现在只是读取set item [$data(canvas) find closest $x $y],效果很好。$data(canvas) canvasx $x因为它自己的作品很好,但与 无关find closest,如果它写成两行也不行。

于 2013-02-11T23:05:32.470 回答