所以我正在尝试创建一个允许用户控制和监控各种硬件组件的Kivy应用程序。部分代码构建并不断更新Excel工作表,该工作表从硬件的通信端口导入温度读数,以及时间戳。到目前为止,我已经能够实现所有这些,但是在构建/更新Excel工作表时(即我的硬件测试正在进行中),我无法与Kivy应用程序交互,并且让我无法使用应用程序的功能测试运行时(例如“暂停”或“中止”按钮),直到工作表不再被更改为止。所以我的问题是:是否可以导出到Excel文件,同时能够同时使用Kivy应用程序?如果是这样,怎么样?
这是我设置Excel工作表的代码的一部分。提前谢谢!
from kivy.app import App
from openpyxl import Workbook, load_workbook
import time
class HomeScreen(Screen):
def build(self):
return HomeScreen()
def RunExcelFile(self):
wb = Workbook()
ws = wb.active
a = 0
i = 2
while (a < 5):
ws.cell('A1').value = 'Time'
ws.cell('B1').value = 'Batch 1'
ws.cell('C1').value = 'Batch 2'
column = 'A'
row = i
time_cell = column + str(row)
t = time.localtime()
ws.cell(time_cell).value = time.asctime(t)
a = (a + 1)
i = (i + 1)
time.sleep(1)
wb.save("scatter.xlsx")
答案 0 :(得分:1)
如果您在不触及窗口小部件或属性的情况下执行某些后台作业,则可以毫无问题地使用threading
模块。否则,您需要使用@mainthread装饰器或Clock。
import time
import threading
class HomeScreen(Screen):
def run_excel_file(self):
def job():
for i in xrange(5):
print i
time.sleep(1)
print 'job done'
threading.Thread(target=job).start()