在构建 excel 文件时使用 Kivy 应用程序

Use Kivy app while excel file is being built

所以我正在尝试创建一个 Kivy 应用程序,允许用户控制和监视各种硬件组件。部分代码构建并不断更新 Excel 工作表,该工作表从硬件的通信端口导入温度读数以及时间戳。到目前为止,我已经能够实现所有这些,但是当 Excel 工作表处于 built/updated 时(即,当我的硬件测试正在进行时),我无法与 Kivy 应用程序交互,然后离开我在测试 运行(例如 'Pause' 或 'Abort' 按钮)时无法使用应用程序的功能,直到工作表不再被更改。所以我的问题是:是否可以在能够同时使用 Kivy 应用程序的同时导出到 Excel 文件?如果是,怎么做?

这是我设置 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")

如果您在不接触小部件或属性的情况下执行某些后台作业,则可以毫无问题地使用 threading 模块。否则,您需要使用 @mainthread decorator or 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()