во время моих первых приключений с киви я пытаюсь распечатать график данных.
мой файл main.py выглядит так.
Мне нужно добавить еще некоторые детали, пока stackoverflow не позволит мне спросить. Но я думаю, что код говорит сам за себя.
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.widget import Widget
from kivy.graphics import Line, Color
from kivy.properties import ListProperty
import os
class CamMeasureWidget(BoxLayout):
def load_file(self):
"""Test: Datei laden und visualisieren"""
try:
with open("daten.bin", "rb") as f:
data = f.read()
self.ids.plot.data = list(data)
print(f"{len(data)} Bytes geladen.")
except Exception as e:
print("Fehler beim Laden:", e)
class BytePlot(Widget):
data = ListProperty([]) # Liste von Bytes
def __init__(self, **kwargs):
super().__init__(**kwargs)
with self.canvas:
Color(0, 1, 0, 1)
Line(circle=(self.width / 2, self.height / 2, 25), width=2)
Line(rectangle=(0, 0, self.width, self.height), width=5)
def on_data(self, instance, value):
"""Neuzeichnen wenn Daten geändert werden."""
self.draw_data()
def draw_data(self):
self.canvas.clear()
if not self.data:
return
with self.canvas:
Color(0, 1, 0) # grün
width = self.width
height = self.height
n = len(self.data)
if n == 0:
return
# Abstand zwischen Linien
x_step = width / n
for i, b in enumerate(self.data):
x = i * x_step
line_height = (b / 255) * height
Line(points=[x, 0, x, line_height], width=1)
class CamMeasureApp(App):
def build(self):
return CamMeasureWidget()
if __name__ == '__main__':
CamMeasureApp().run()
Зеленый график должен быть нарисован в первой трети, но он нарисован на фоне, начиная с нижнего левого края.
Что здесь не так?
Скриншот
Привет из Баварии
во время моих первых приключений с киви я пытаюсь распечатать график данных. мой файл main.py выглядит так. Мне нужно добавить еще некоторые детали, пока stackoverflow не позволит мне спросить. Но я думаю, что код говорит сам за себя. [code]from kivy.app import App from kivy.uix.boxlayout import BoxLayout from kivy.uix.widget import Widget from kivy.graphics import Line, Color from kivy.properties import ListProperty import os
class CamMeasureWidget(BoxLayout): def load_file(self): """Test: Datei laden und visualisieren"""
try: with open("daten.bin", "rb") as f: data = f.read() self.ids.plot.data = list(data) print(f"{len(data)} Bytes geladen.") except Exception as e: print("Fehler beim Laden:", e)
class BytePlot(Widget): data = ListProperty([]) # Liste von Bytes
Button: text: "Stopp" on_release: print("Stopp gedrückt") [/code] Зеленый график должен быть нарисован в первой трети, но он нарисован на фоне, начиная с нижнего левого края. Что здесь не так? Скриншот Привет из Баварии