如何在其他屏幕上显示情节

时间:2020-04-30 09:43:54

标签: python kivy kivy-language

在第一个屏幕中单击按钮后,我试图在第二个屏幕中显示图。 这是我尝试过的代码。 进口猕猴桃 从kivy.app导入App 从kivy.uix.label导入Label 从kivy.uix.gridlayout导入GridLayout 从kivy.uix.textinput导入TextInput 从kivy.uix.button导入Button 从kivy.uix.boxlayout导入BoxLayout 从kivy.properties导入ObjectProperty 从kivy.lang导入生成器 从kivy.uix.screenmanager导入ScreenManager,屏幕 从kivy.garden.matplotlib.backend_kivyagg导入FigureCanvasKivyAgg 从kivy.uix.widget导入小部件 从熊猫导入read_excel 导入matplotlib.pyplot作为plt

onDelete()

但是我遇到错误,说plt.plot([1, 23, 2, 4]) plt.ylabel('some numbers') class MainWindow(Screen): def btn(self): print("name: ",self.name2.text) self.ids.destination.add_widget(FigureCanvasKivyAgg(plt.gcf())) class SecondWindow(Screen): pass class WindowManager(ScreenManager): pass kv = Builder.load_file("my.kv") class MyMainApp(App): def build(self): return kv if __name__=="__main__": MyMainApp().run() #:kivy 1.9.1 WindowManager: MainWindow: SecondWindow: <MainWindow>: name: "main" name2: name2 GridLayout: cols:1 size: root.width, root.height GridLayout: cols:2 Label: text:"name: " TextInput: id: name multinline:False Label: text:"name2: " TextInput: id: name2 multinline:False Button: text:"Submit" on_release: root.btn() app.root.current = "second" root.manager.transition.direction = "left" <SecondWindow>: name: "second" GridLayout: cols:1 BoxLayout: id: destination Button: text: "Go Back" on_release: app.root.current = "main" root.manager.transition.direction = "right" ,我不知道这是什么意思。请帮助我。

1 个答案:

答案 0 :(得分:1)

问题是您正在尝试使用在其他id中定义的Screendestination是在SecondWindow中定义的,因此MainWindow对此一无所知。因此,您可以像这样通过id来引用SecondWindow

class MainWindow(Screen):
    def btn(self):
        print("name: ",self.name2.text)
        self.manager.get_screen('second').ids.destination.add_widget(FigureCanvasKivyAgg(plt.gcf()))