在构建 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()
所以我正在尝试创建一个 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()