Python 如何从另一个类中的函数调用一个类? kv文件。。。 按钮: 文本:“弹出窗口” 大小提示:0.2,0.2 按:root.debit() : 按钮: 文本:“popup2” 大小提示:0.2,0.2 #按:root.debit()
有一个按钮弹出,当我按下此按钮时,我正在调用Python 如何从另一个类中的函数调用一个类? kv文件。。。 按钮: 文本:“弹出窗口” 大小提示:0.2,0.2 按:root.debit() : 按钮: 文本:“popup2” 大小提示:0.2,0.2 #按:root.debit(),python,kivy,Python,Kivy,有一个按钮弹出,当我按下此按钮时,我正在调用debit()函数。在debit函数中,我正在调用Hello(),但是我无法从这个类中获得任何信息。我做错了什么 每当我点击一个按钮,我想要一个新的屏幕,但没有屏幕导航。我该怎么做 您可以使用屏幕管理器进行此操作。 举个小例子: 从kivy.app导入应用 从kivy.lang导入生成器 KV=”“” #:导入NotTransition kivy.uix.screenmanager.NotTransition 盒子布局: 方向:“垂直” 标签: 正文:
debit()
函数。在debit函数中,我正在调用Hello()
,但是我无法从这个类中获得任何信息。我做错了什么
每当我点击一个按钮,我想要一个新的屏幕,但没有屏幕导航。我该怎么做 您可以使用
屏幕管理器进行此操作。
举个小例子:
从kivy.app导入应用
从kivy.lang导入生成器
KV=”“”
#:导入NotTransition kivy.uix.screenmanager.NotTransition
盒子布局:
方向:“垂直”
标签:
正文:“顶部”
屏幕管理器:
id:sm
转换:nottransition()
屏幕:
名称:“屏幕1”
按钮:
文本:“屏幕2”
发布时:sm.current=“screen2”
屏幕:
名称:“屏幕2”
按钮:
文本:“屏幕1”
发布时:sm.current=“screen1”
标签:
正文:“底部”
"""
类TestApp(应用程序):
def生成(自):
返回生成器。加载字符串(KV)
TestApp().run()
Question Kivy工厂
kivy工厂的概念是什么
答复
当关键字Factory
在项目中的任何位置(例如kv文件或Python脚本)使用时,它将自动注册任何类或模块并实例化它们
实例
下面的示例说明了如何在kv文件中使用工厂
,注册并实例化弹出窗口
小部件,您好。Python脚本中没有Hello的类定义,也没有方法debit()
的定义
main.py
问题2
每当我点击一个按钮,我想要一个新的屏幕,但没有屏幕
航行我该怎么做
解决方案
您可以使用KivyPopup
widget
实例
main.py
从kivy.app导入应用
从kivy.uix.popup导入弹出窗口
从kivy.uix.widget导入widget
从kivy.lang导入生成器
生成器。加载\u字符串(“”)
:
按钮:
文本:“弹出窗口”
大小提示:0.2,0.2
按:root.debit()
:
标题:“Hello Popup2”
自动解除:错误
按钮:
文本:“关闭弹出窗口”
大小提示:0.2,0.2
按:root.discouse()
""")
类借方(小部件):
def借记卡(自助):
返回Hello().open()
类Hello(弹出窗口):
通过
课程MyPracticeApp(应用程序):
def生成(自):
返回借方()
如果名称=“\uuuuu main\uuuuuuuu”:
MyPracticeApp().run()
输出
我不想使用ScreenManager…假设在左上角有4个按钮,分别是借记、贷记、配置文件和设置。。底部有一些图片。当我点击借记按钮时,我不想滑动屏幕,但想更改屏幕的视图,等等。谢谢你advance@Rahulcharan我更新了答案,就是为了做到这一点。不过,screenmanager是一种方式。你可以在kivy上任意嵌套小部件。@Rahulcharan没问题,假设我想在屏幕1中添加一些逻辑,如果这个逻辑是真的,那么我想进入屏幕2,否则我想留在屏幕1上……我该怎么做?你能给我推荐一个好的kivy教程,让我从零开始学习kivy……阅读官方文档吗对我来说很难…@ikolim谢谢你的帮助。它起作用了。。。。你能给我解释一下kivy工厂的概念吗…….请参考更新的帖子了解kivy工厂的详细信息。
from kivy.app import App
from kivy.uix.popup import Popup
from kivy.uix.widget import Widget
from kivy.uix.dropdown import DropDown
class MyPracticeApp(App):
def build(self):
return Debit()
class Debit(Widget):
def debit(self):
return Hello()
class Hello(Widget):
pass
if __name__ == "__main__":
MyPracticeApp().run()
<Debit>
Button:
text : 'popup'
size_hint : 0.2,0.2
on_press : root.debit()
<Hello>:
Button:
text : 'popup2'
size_hint : 0.2,0.2
# on_press : root.debit()
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.lang import Builder
Builder.load_string("""
#:import Factory kivy.factory.Factory
<Debit>:
Button:
text : 'popup'
size_hint : 0.2,0.2
on_press : Factory.Hello().open()
<Hello@Popup>:
title: 'Popup2'
auto_dismiss: False
BoxLayout:
orientation: 'vertical'
Label:
text: 'Hello Kivy'
Button:
text : 'Close Popup'
size_hint : 1,0.2
on_press : root.dismiss()
""")
class Debit(Widget):
pass
class MyPracticeApp(App):
def build(self):
return Debit()
if __name__ == "__main__":
MyPracticeApp().run()
def debit(self):
return self.add_widget(Hello())
from kivy.app import App
from kivy.uix.popup import Popup
from kivy.uix.widget import Widget
from kivy.lang import Builder
Builder.load_string("""
<Debit>:
Button:
text : 'popup'
size_hint : 0.2,0.2
on_press : root.debit()
<Hello>:
title: 'Hello Popup2'
auto_dismiss: False
Button:
text : 'Close Popup'
size_hint : 0.2,0.2
on_press : root.dismiss()
""")
class Debit(Widget):
def debit(self):
return Hello().open()
class Hello(Popup):
pass
class MyPracticeApp(App):
def build(self):
return Debit()
if __name__ == "__main__":
MyPracticeApp().run()