繁体   English   中英

Kivy这两个代码怎么组合?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM