如何在其他屏幕kivy中显示情节
Posted
技术标签:
【中文标题】如何在其他屏幕kivy中显示情节【英文标题】:how to show plot in other screen kivy 【发布时间】:2020-08-14 15:26:35 【问题描述】:单击第一个屏幕中的按钮后,我尝试在第二个屏幕中显示绘图。 这是我尝试过的代码。 进口猕猴桃 从 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,Screen 从 kivy.garden.matplotlib.backend_kivyagg 导入 FigureCanvasKivyAgg 从 kivy.uix.widget 导入小部件 从熊猫导入 read_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"
但我收到错误消息说'super' object has no attribute '__getattr__'
,我不知道这是什么意思。请帮帮我。
【问题讨论】:
【参考方案1】:问题是您尝试使用在不同的Screen
中定义的id
。 destination
是在 SecondWindow
中定义的,所以 MainWindow
对此一无所知。因此,您可以像这样通过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()))
【讨论】:
以上是关于如何在其他屏幕kivy中显示情节的主要内容,如果未能解决你的问题,请参考以下文章
如何在Android中保持kivy服务在后台运行(切换到其他应用程序或锁定屏幕时服务仍然运行)?
在 Kivy 中,我如何从另一个以 kv 语言显示的另一个屏幕获取变量
如何使用 kivy 和 python 在屏幕上显示文件的内容?