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

时间:2016-03-06 03:48:28

标签: kivy export-to-excel openpyxl

所以我正在尝试创建一个允许用户控制和监控各种硬件组件的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")

1 个答案:

答案 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()