Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在其他屏幕中显示绘图kivy_Python_Kivy_Kivy Language - Fatal编程技术网

Python 如何在其他屏幕中显示绘图kivy

Python 如何在其他屏幕中显示绘图kivy,python,kivy,kivy-language,Python,Kivy,Kivy Language,单击第一个屏幕上的按钮后,我试图在第二个屏幕上显示绘图。 这是我试过的代码。 进口克维 从kivy.app导入应用程序 从kivy.uix.label导入标签 从kivy.uix.gridlayout导入gridlayout 从kivy.uix.textinput导入textinput 从kivy.uix.button导入按钮 从kivy.uix.boxlayout导入boxlayout 从kivy.properties导入ObjectProperty 从kivy.lang导入生成器 从kivy

单击第一个屏幕上的按钮后,我试图在第二个屏幕上显示绘图。 这是我试过的代码。 进口克维 从kivy.app导入应用程序 从kivy.uix.label导入标签 从kivy.uix.gridlayout导入gridlayout 从kivy.uix.textinput导入textinput 从kivy.uix.button导入按钮 从kivy.uix.boxlayout导入boxlayout 从kivy.properties导入ObjectProperty 从kivy.lang导入生成器 从kivy.uix.screenmanager导入screenmanager,屏幕 从kivy.garden.matplotlib.backend_kivyagg导入图Canvaskivyagg 从kivy.uix.widget导入widget 从pandas导入读取excel 将matplotlib.pyplot作为plt导入

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"
plt.plot([1,23,2,4])
plt.ylabel('一些数字')
类主窗口(屏幕):
def btn(自身):
打印(“名称:”,self.name2.text)
self.ids.destination.add_小部件(图canvaskivyagg(plt.gcf())
第二类窗口(屏幕):
通过
类WindowManager(屏幕管理器):
通过
kv=Builder.load_文件(“my.kv”)
类MyMainApp(应用程序):
def生成(自):
回流千伏
如果名称=“\uuuuu main\uuuuuuuu”:
MyMainApp().run()
#:kivy 1.9.1
WindowManager:
主窗口:
第二窗口:
:
名称:“主要”
名称2:名称2
网格布局:
科尔斯:1
尺寸:根.宽度,根.高度
网格布局:
科尔斯:2
标签:
文本:“名称:”
文本输入:
id:姓名
多行:错误
标签:
文本:“名称2:”
文本输入:
id:姓名2
多行:错误
按钮:
案文:“提交”
发布时:
root.btn()
app.root.current=“秒”
root.manager.transition.direction=“左”
:
姓名:“第二”
网格布局:
科尔斯:1
盒子布局:
id:目的地
按钮:
文本:“返回”
发布时:
app.root.current=“main”
root.manager.transition.direction=“右”

但我得到的错误是,
“super”对象没有属性“\uu getattr\uuu”
,我不知道这是什么意思。请帮助我。

问题是您试图使用在不同的
屏幕中定义的
id
destination
是在
SecondWindow
中定义的,因此
main window
对其一无所知。因此,您可以通过如下方式通过
SecondWindow
引用该
id

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