Виджет kivy рисует в корне вместо места виджетаPython

Программы на Python
Ответить
Anonymous
 Виджет kivy рисует в корне вместо места виджета

Сообщение Anonymous »

во время моих первых приключений с киви я пытаюсь распечатать график данных.
мой файл 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()
вот файл kivy

Код: Выделить всё

#:kivy 1.0.9

:
# BoxLayout:
orientation: "vertical"
spacing: 10
padding: 10

BytePlot:
id: plot

Button:

text: "Start (Datei laden)"
on_release: root.load_file()

Button:
text: "Stopp"
on_release: print("Stopp gedrückt")
Зеленый график должен быть нарисован в первой трети, но он нарисован на фоне, начиная с нижнего левого края.
Что здесь не так?
Скриншот
Привет из Баварии

Подробнее здесь: https://stackoverflow.com/questions/798 ... dget-place
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»