Python 2.7 使用python和tkinter在单击按钮时调用python脚本

Python 2.7 使用python和tkinter在单击按钮时调用python脚本,python-2.7,tkinter,Python 2.7,Tkinter,我有一个python脚本,它具有向用户发送电子邮件的功能。我执行了这个脚本,它工作得很好。在另一个python脚本中,我只有一个按钮,因此当我单击此按钮时,我希望执行另一个发送电子邮件的python脚本。我编写了以下代码: #!/usr/bin/python import sys import os import Tkinter import tkMessageBox top=Tkinter.Tk() def helloCallBack(): os.system('SendEmail.

我有一个python脚本,它具有向用户发送电子邮件的功能。我执行了这个脚本,它工作得很好。在另一个python脚本中,我只有一个按钮,因此当我单击此按钮时,我希望执行另一个发送电子邮件的python脚本。我编写了以下代码:

#!/usr/bin/python
import sys
import os
import Tkinter
import tkMessageBox
top=Tkinter.Tk()

def helloCallBack():
    os.system('SendEmail.py')

B=Tkinter.Button(top,text="hello",command= helloCallBack)
B.pack()
top.mainloop()
单击该按钮时,出现以下错误:

sh:1:SendEmail.py:未找到


您能告诉我此错误的原因以及解决方法吗?谢谢。

我找到了一种方法,可以在单击按钮时调用另一个python脚本:


我们需要使用os.system('sendmail.py')而不是os.system('python sendmail.py')

如果您的
sendmail.py
位于同一位置,请使用
os.system('sendmail.py')
。如果它位于不同的位置,请使用
os.system('python sendmail.py')


使用关键字“python”来运行命令

作为一个业余爱好者,我没有资格给出建议。我就是这样做的

我也想做这种事。我有大约16个小python程序,它们生成html、复选框集、单选按钮集、文本输入字段、html表格等

在这里的另一个线程中,有一条评论非常反对使用os.system调用。不知道为什么,但我想我会尝试另一种方法

我刚刚开始学习tkinter,所以我让我的每个“makehtml”函数在窗口中运行

现在我想要一个带按钮的主窗口。单击一个按钮,将打开另一个窗口,如复选框窗口,或用于生成html的任何其他窗口

我制作了一个模块:guiHTML.py我所有的“makehtml”函数都在那里

在主窗口中导入guiHTML

import os, sys    
# to import the files we need the paths
path = '/home/pedro/myPython/myModules/'    
# append the paths
sys.path.append(path)

import tkinter as tk
from functools import partial      
import guiHTML
然后,在主窗口中为每个按钮创建如下功能:

def openCheckboxes():
        #call the checkboxes function defined in the guiHTML module
        guiHTML.checkboxes()
然后,在复选框按钮中输入以下内容:

btn3 = tk.Button(frame1, text='insert checkboxes', command=openCheckboxes)
btn3.grid(columnspan=2, column=0, row=2, sticky='w', pady=10)
单击btn3,将打开复选框窗口

这对我很有效,但我不知道这是否是一个好方法。我一个月前才开始学习tkinter


如果有更好的方法,我很高兴听到各位专家的意见

如果转到命令提示符并键入
sendmail.py
,会发生什么情况?你有没有遇到同样的错误?没有。它工作得很好。我分别执行了相同的python文件,然后它工作得很好。我使用了python sendmail.py,它工作得很好。你注意到你刚才写的吗?你说“我使用了python sendmail.py”。这不是我问的,也不是你在剧本里做的。在提示下,按字面意思键入
SendMail.py
而不是
python SendMail.py
。我怀疑你也会犯同样的错误。如果它不能从命令行运行,那么它就不能从
os.system()
运行。不要忘记实际回答这个问题。有关一些指导原则,请参阅。最初的问题是询问错误的原因。
import os, sys    
# to import the files we need the paths
path = '/home/pedro/myPython/myModules/'    
# append the paths
sys.path.append(path)

import tkinter as tk
from functools import partial      
import guiHTML
def openCheckboxes():
        #call the checkboxes function defined in the guiHTML module
        guiHTML.checkboxes()
btn3 = tk.Button(frame1, text='insert checkboxes', command=openCheckboxes)
btn3.grid(columnspan=2, column=0, row=2, sticky='w', pady=10)