使用 tkinter.Tk() class 执行代码时遇到问题
Trouble executing code with the tkinter.Tk() class
我正在尝试使用 tkinter.Tk()
class 从 python 执行 Tcl。我的问题是每次我尝试 运行 我的代码时,我都会收到问题底部显示的错误
仅供参考:我的 Tcl 代码保存在文件 "calc.tcl" 中,我的 python 文件名为 'go.py'
我的python代码是:
from tkinter import *
root=Tk()
code=open('calc.tcl').read()
root.tk.call('exec'code)
root.mainloop()
我的 Tcl 代码是:
frame .fr
pack .fr
proc calc {} {
set text [.fr.ent1 get]
if {[catch {set result [expr $text]}]} {
set result "calculation failed"
}
.fr.ent2 delete 0 end
.fr.ent2 insert 1 $result
}
entry .fr.ent1
bind .fr.ent1 <Return> {calc}
entry .fr.ent2
grid .fr.ent1 -row 0 -column 0
grid .fr.ent2 -row 1 -column 0
错误是:
Traceback (most recent call last):
File "go.py", line 4, in <module>
root.tk.call('exec',code)
_tkinter.TclError: couldn't execute "
frame .fr
pack .fr
proc calc {} {
set text [.fr.ent1 get]
if {[catch {set result [expr $text]}]} {
set result "calculation failed"
}
.fr.ent2": file name too long
在 Tcl 中,exec
运行由具有给定名称的可执行文件定义的子进程(其中包含空格和换行符等,确实 不寻常的文件名,给你一条错误消息,因为你没有这样的可执行文件)。您可能想改用 eval
。
root.tk.call('eval', code)
我正在尝试使用 tkinter.Tk()
class 从 python 执行 Tcl。我的问题是每次我尝试 运行 我的代码时,我都会收到问题底部显示的错误
仅供参考:我的 Tcl 代码保存在文件 "calc.tcl" 中,我的 python 文件名为 'go.py'
我的python代码是:
from tkinter import *
root=Tk()
code=open('calc.tcl').read()
root.tk.call('exec'code)
root.mainloop()
我的 Tcl 代码是:
frame .fr
pack .fr
proc calc {} {
set text [.fr.ent1 get]
if {[catch {set result [expr $text]}]} {
set result "calculation failed"
}
.fr.ent2 delete 0 end
.fr.ent2 insert 1 $result
}
entry .fr.ent1
bind .fr.ent1 <Return> {calc}
entry .fr.ent2
grid .fr.ent1 -row 0 -column 0
grid .fr.ent2 -row 1 -column 0
错误是:
Traceback (most recent call last):
File "go.py", line 4, in <module>
root.tk.call('exec',code)
_tkinter.TclError: couldn't execute "
frame .fr
pack .fr
proc calc {} {
set text [.fr.ent1 get]
if {[catch {set result [expr $text]}]} {
set result "calculation failed"
}
.fr.ent2": file name too long
在 Tcl 中,exec
运行由具有给定名称的可执行文件定义的子进程(其中包含空格和换行符等,确实 不寻常的文件名,给你一条错误消息,因为你没有这样的可执行文件)。您可能想改用 eval
。
root.tk.call('eval', code)