我希望将图形添加到我的奇异屏幕应用程序之一。带有StartScreen的Basic App和带有图形本身以及少量按钮的SecondScreen。我无法在Kivy中显示图表。我尝试为它创建一个类,但最终总是收到此错误:
AttributeError:'Figure'对象没有属性'set_canvas'
我尝试自己寻找答案,但我总是死胡同。这是下图的代码以及我的应用程序的代码。如果有人可以向我指出正确的方向,那么您将成为我的英雄!
您是真的,编码新手!
以下是图形:
import plotly.graph_objects as go
fig = go.Figure(go.Indicator(
mode = "number+gauge+delta",
gauge = {'shape': "bullet"},
delta = {'reference': 300},
value = 220,
domain = {'x': [0.1, 1], 'y': [0.2, 0.9]},
title = {'text': "Avg order size"}))
fig.show()
这是我的main.py:
import plotly.graph_objects as go
from kivy.app import App
from kivy.core.window import Window
from kivy.lang import Builder
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.button import ButtonBehavior
from kivy.uix.widget import Widget
from kivy.uix.image import Image
from kivy.uix.screenmanager import Screen
from kivy.graphics import Rectangle
from kivy.garden.matplotlib.backend_kivyagg import FigureCanvasKivyAgg
from kivy.properties import ObjectProperty
import matplotlib.pyplot as plt
class StartScreen(Screen):
pass
Window.clearcolor = (1, 1, 1, 1)
class GraphScreen(Screen):
pass
class ImageButton(ButtonBehavior, Image):
pass
GUI = Builder.load_file("main.kv")
class Main(App):
def build(self):
return GUI
def change_screen(self, screen_name):
# Get the screen manager from the kv file
screen_manager = self.root.ids['screen_manager']
screen_manager.current = screen_name
if __name__ == '__main__':
Main().run()
这是我的main.kv:
#:include kv/startscreen.kv
#:include kv/graphscreen.kv
GridLayout:
cols: 1
ScreenManager:
id: screen_manager
StartScreen:
name: "start_screen"
id: start_screen
GraphScreen:
name: "graph_screen"
id: graph_screen
这是我的开始屏幕。kv:
#:import utils kivy.utils
<StartScreen>:
FloatLayout:
GridLayout:
rows: 1
pos_hint: {"top": 1, "left": 1}
size_hint: 1, .5
Label:
rows: 1
text: "Budget Meter"
font_size: 30
font_name: "font/Duldolar.ttf"
color: 0, 0, 0, 1
GridLayout:
rows: 1
pos_hint: {'x':.02, 'y':.6}
size_hint: 1, .1
ImageButton:
source: "images/Ecommerce_203.jpg"
on_release:
app.change_screen("graph_screen")
这是我的graphscreen.kv:
#:import utils kivy.utils
<GraphScreen>:
BoxLayout:
orientation: "vertical"
size_hint: .3, .5
pos_hint: {'x':.35, 'y':0}
ImageButton:
source: "images/ope.jpg"
on_release:
app.change_screen("start_screen")