【问题标题】:Can I use buttons from one screen to make changes to other screen?我可以使用一个屏幕上的按钮来更改另一个屏幕吗?
【发布时间】:2020-06-05 13:18:08
【问题描述】:

我有一个我想要制作的应用程序的骨架。我试图了解“值屏幕”中的按钮如何干扰“方向屏幕”中的绘图。

这甚至可能吗?我不知道这样一个“更新”函数的语法,也不知道该放在哪里(尽管我认为它必须在 MyFigure 类下)。

main.py 是

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.garden.matplotlib.backend_kivyagg import FigureCanvasKivyAgg
import matplotlib.pyplot as plt


class AppScreen(BoxLayout):
    pass

class MagneticFieldApp(App):
    def build(self):
        return AppScreen()

class MyFigure(FigureCanvasKivyAgg):
    def __init__(self, **kwargs):
        plt.plot([1, 23, 2, 25])
        plt.ylabel('some numbers')
        super().__init__(plt.gcf(), **kwargs)

    #def plotx2(self):

    #def plotx3(self):

if __name__ == "__main__":
    MagneticFieldApp().run()

磁场.kv 是

<ValuesScreen@Screen>:

<DirectionScreen@Screen>:

<IntensityScreen@Screen>:
    Label:
        text: 'intensity'
        font_size:50

<AppScreen>:
    spacing: 5
    orientation: 'vertical'
    manager: manager

    ScreenManager:
        size_hint: 1 , .9
        pos_hint: {'top': 1}
        id: manager

        ValuesScreen:
            name: 'valuesscreen'
            GridLayout:
                cols: 1
                Button:
                    text: 'x**2'
                    #on_press:

                Button:
                    text: 'x**3'
                    #on_press:

        DirectionScreen:
            name: 'directionscreen'
            MyFigure:

        IntensityScreen:
            name: 'intensityscreen'

    GridLayout:
        size_hint: 1 , .1
        pos_hint: {'y': 0}
        rows:1

        Button:
            text: 'values'
            on_press:
                root.manager.current = 'valuesscreen'

        Button:
            text: 'direction'
            on_press:
                root.manager.current = 'directionscreen'

        Button:
            text: 'intensity'
            on_press:
                root.manager.current = 'intensityscreen'

【问题讨论】:

    标签: python-3.x matplotlib kivy kivy-language matplotlib-widget


    【解决方案1】:

    你可以使用app.root.get_screen('directionscreen').plotx2(),但我不能更准确,因为我不明白你想做什么:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多