我正在寻找一种能够从Tkinter GUI运行python命令的方法。 (我正在使用python 2.7。)
示例:
import Tkinter
root = Tk()
def run():
print 'smth'
def runCommand():
code...
button = Button(root, text = 'smth', command = run).pack()
entry = Entry(root, width = 55, justify = 'center').pack()
entry_button = Button(root, text = 'Run', command = runCommand).pack()
root.mainloop()
我想在条目中输入print 'hello'
,当我按下 Run 按钮时,它实际上会运行命令print 'hello'
这怎么办?如果不是,那我可以在Tkinter中添加命令行小部件吗?
答案 0 :(得分:0)
如果您想一次评估一个表达式(例如print 'hello
),那么eval()
就是您想要的。
def runCommand():
eval(entry.get())
另一个选项是exec()
;您必须decide才能更好地满足您的用例需求。可能的危险已经比我可能的描述得更好:
用户可以将此选项用作在计算机上运行代码的选项。如果导入了eval(input())和os,则一个人可以在input()中输入os.system('rm -R *'),这将删除您主目录中的所有文件。 来源:CoffeeRain
请注意(如stovfl所述),您应该分别声明和打包小部件。
即,更改此内容:
entry = Entry(root, width = 55, justify = 'center').pack()
对此:
entry = Entry(root, width = 55, justify = 'center')
entry.pack()
否则,您最终将存储pack()
(即None
)的值,而不是存储小部件(Button
和Entry
对象)