[英]How to combine these two codes in Kivy?
我有两个代码,我想将 Python 代码组合成 Kivy 代码。 python 代码:
import csv
import socket
import datetime
import time
from itertools import zip_longest
Time =[]
Price = []
fields = ['Time', 'Price']
s = socket.socket(socket.AF_BLUETOOTH, socket.SOCK_STREAM, socket.BTPROTO_RFCOMM)
port = 1
hostMACAddress = ''
s.bind((hostMACAddress,port))
s.listen(1)
client, address = s.accept()
while(1):
message_received = client.recv(1024).decode('utf-8')
data = message_received
Price.append(float(data))
Time.append(time.strftime("%a %I:%M:%S %p"))
item_1 = Time
item_2 = Price
data = [item_1, item_2]
export_data = zip_longest(*data, fillvalue = '')
with open('data1.csv', 'w', newline='') as file:
write = csv.writer(file)
write.writerow(("Time", "Price"))
write.writerows(export_data)
s.close()
kivy 代码:
from kivy.lang import Builder
from kivymd.app import MDApp
from kivy.uix.floatlayout import FloatLayout
from kivy.garden.matplotlib.backend_kivyagg import FigureCanvasKivyAgg
import matplotlib.pyplot as plt
import socket
import os
import numpy as np
import datetime
import matplotlib.animation as animation
from matplotlib import style
import csv
import pandas as pd
from matplotlib.animation import FuncAnimation
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
x_values = []
y_values = []
def animate(i):
data = pd.read_csv('data1.csv')
x_values = data['Time']
y_values = data['Price']
plt.cla()
plt.plot(x_values, y_values, color='green', linestyle='dashed', linewidth = 3, marker='o', markerfacecolor='blue', markersize=12)
plt.gcf().autofmt_xdate()
plt.tight_layout()
ani = FuncAnimation(plt.gcf(), animate, 5000)
plt.tight_layout()
class Matty(FloatLayout):
def __init__(self , **kwargs):
super(). __init__(**kwargs)
box = self.ids.box
box.add_widget(FigureCanvasKivyAgg(plt.gcf()))
def save_it(self):
pass
class MainApp(MDApp):
def build(self):
self.theme_cls.theme_style = "Dark"
self.theme_cls.primary_palette = "BlueGray"
Builder.load_file('matty.kv')
return Matty()
MainApp().run()
kv文件:
<Matty>
BoxLayout:
id:box
size_hint_y: .75
pos_hint: {'x':0.0 , 'y':0.0}
我想运行Kivy代码中的python代码就有代码了。 每次我这样做时,Kivy 程序都没有响应。 如何从套接字中获取数据并将其保存到.csv文件中,然后将plot.csv数据连续保存到kivy中。
由于您的第一个代码没有类或方法,一旦它被 python 导入,它将永远运行它的循环。您仍然可以通过将其import
放入新线程来使用该代码。 你可以使用类似的东西:
def doit(self, button):
print('importing')
threading.Thread(target=self.do_import, daemon=True).start()
print('imported')
def do_import(self):
import python_code
其中python_code
是包含您的 python 代码的 python 文件的名称(省略.py
)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.