【发布时间】:2019-06-10 23:22:14
【问题描述】:
Tkinter 按钮只运行一次单独的脚本
大家好,我是 python 和树莓派的新手,并且一直在寻找如何让 Tkinter 按钮在我的树莓派上多次运行脚本的方法。根据研究,我认为这与 name="main" 有关,但我无法弄清楚需要做什么以及为什么。我的按钮在生成 RF 信号的同一目录中运行一个单独的 python 文件(称为 SendRF.py),它第一次工作,但之后按钮单击没有任何其他作用。任何建议将不胜感激:)
from tkinter import *
#create a window
window =Tk()
window.title("Chappers Home Automation project")
#define a function
def test_function ():
import SendRF
#create a button
B = Button(text ="Test Button 1", command=test_function)
B.pack(padx = 100, pady = 50)
window.mainloop()
没有错误信息出现。按钮在第一次按下时会发送射频信号,但在进一步点击按钮时没有任何反应。
【问题讨论】:
-
这可能与您导入模块以可能运行副作用有关。为什么不在文件顶部导入一次,将所有副作用代码放在
SendRF.py中的一个函数中,然后在回调中运行SendRF.send_signal()? -
我认为@Carcigenicate 是对的。当您导入脚本时,它会被执行。但是,如果您尝试再次导入它,因为它已经被“导入”,它不会再次这样做。我猜 import 不是为了脚本,而是为了函数。我建议你把你的脚本作为一个定义,最后添加一个经典的 name if 语句如下: def x(): pass if name == ' main' : x() 这样,你的函数仍然可以作为脚本执行,但不会在导入期间执行。
标签: python-3.x tkinter raspberry-pi3