2017-01-16 11 views
0

Я пытаюсь найти решение для встраивания графа в виджет kivy. Кажется, есть только один пример использования kivy garden graph (sin wave), и мне трудно выполнить это в своем приложении.Граф Kivy не отображается в виджетах

Вот код, который я работаю с

#!/usr/bin/kivy 
import kivy 


from random import random 
from kivy.app import App 
from kivy.lang import Builder 
from kivy.uix.screenmanager import ScreenManager, Screen 
from kivy.uix.gridlayout import GridLayout 
from kivy.uix.boxlayout import BoxLayout 
from kivy.uix.button import Button 
from kivy.uix.switch import Switch 
from kivy.uix.label import Label 
from kivy.garden.graph import Graph, MeshLinePlot 
from math import sin 
import matplotlib.pyplot as plt 
import matplotlib.animation as animation 
from kivy.graphics import * 

from kivy.config import Config 
Config.set('graphics', 'width', '800') 
Config.set('graphics', 'height', '480') 

Builder.load_string(""" 

<Menuscreen>: 
    #Handling the gesture event. 
    ScreenManager: 
     id: manager 
     Screen: 
      id: main_screen 
      name:'main_screen' 
      FloatLayout: 

       MyGraph: 
        size_hint: None, None 
        size: 800,600 
        pos: 25,25 



""") 

class MyGraph(Graph): 
    def __init__(self, **kwargs): 
     super(MyGraph, self).__init__(**kwargs) 
     self.xlabel = 'This is the X axis' 
     self.ylabel = 'This is the Y axis' 
     self.x_ticks_minor = 5 
     self.x_ticks_major = 25 
     self.y_ticks_major = 1 
     self.y_grid_label = True 
     self.x_grid_label = True 
     self.x_grid = True 
     self.y_grid = True 
     self.xmax = 100 
     self.xmin = -0 
     self.ymin = -1 
     self.ymax = 1 
     self.plot = MeshLinePlot(color=[1, 0, 0, 1]) 
     self.plot.points = [(x, sin(x/10.)) for x in range(0, 100)] 
     self.add_plot(self.plot) 

class MenuScreen(Screen): 
    pass 

sm = ScreenManager() 
menu_screen = MenuScreen(name='menu') 
sm.add_widget(menu_screen) 


class TestApp(App): 

    def build(self): 

     return sm 

if __name__ == '__main__': 
    TestApp().run() 

Все метки оси, кажется, появляются, но точки на графике не отображаются. Есть ли что-то, что мне не хватает, чтобы это появилось? Заранее благодарим за ваш совет.

ответ

0

Mostafar на Github задал этот же вопрос, и благодаря @Tshirtman, следующий ответ был предоставлен:

mostafar прокомментировал 27 апр 2014 После разговора с @tshirtman, он выяснил, что проблема с StencilBuffer а также путем изменения линии 139 из init.py модуля графа на:

self._fbo = FBO (размер = self.size, with_stencilbuffer = False)

Это будет видно в моем примере, но тогда будет много проблем с новыми функциями графика (SmoothLinePlot).

Ссылка: https://github.com/kivy-garden/garden.graph/issues/7

 Смежные вопросы

  • Нет связанных вопросов^_^