【问题标题】:How to add method under button in FloatLayout, Python + Kivy如何在 FloatLayout、Python + Kivy 的按钮下添加方法
【发布时间】:2021-09-15 22:17:14
【问题描述】:

我想在按钮下分配一个方法来做例子

  • 在控制台中打印文本
  • 退出表单

我的主要python文件如下:

import kivy
from kivy.app import App
from kivy.uix.floatlayout import FloatLayout

class MyGeneralForm(App):
    def build(self):
        return FloatLayout()

    def btnTestEnviron(self):
        print("Print this on console")

    def btnClose(self):
        self.root_window.close()

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

如有错误请指正:

  1. 我定义了继承自 Kivy 的 Class App 的 MyGeneralForm 类
  2. 我不知道为什么要定义这个方法“Build”,它返回“FloatLayout” -> 它的行为类似于类的构造函数并从 Kivy 文件返回布局?
  3. 我在类中定义了两个附加方法:btnTestEnviron 和 btnClose,我想打印它们。在控制台中并关闭表单/应用程序
  4. name = main -> 每当你运行这个特定的 python 文件时执行脚本 -> 它创建类 MyGeneralForm 的对象并使用我理解的方法“run”,我理解它是在 Kivy 的“App”之后继承的?
    为什么不是这样的:
TestApp = MyGeneralForm()    #I set the object of class MyGeneralForm   
TestApp.run()                #I use method run from object TestApp (inherited from App)

现在我有 Kivy 文件如下:

<Button>:
    font_size:20
    color:0.3,0.6,0.7,1
    size_hint: 0.4, 0.2

<FloatLayout>:
    Button:
        id: btnTestEnviron
        pos_hint: {"x":0.3,"y":0.75}
        text: "Run on test Environment"
        background_color: 0.3,0.4,0.5,1
        on_press: root.btnTestEnviron()

    Button:
        id: btnExit
        pos_hint: {"x":0.3,"y":0.0}
        text: "Exit"
        background_color: 0.3,0.4,0.5,1
        on_press: root.btnClose()
  1. 我将所有小部件的属性定义为 -> 为精确按钮 -> 它们的字体、颜色、宽度、高度
  2. 然后我创建 FloatLayout 并在其中创建两个按钮
  3. 如何将我的类 (MyGeneralForm) 中的方法 (btnTestEnviron、btnClose) 与这些按钮相关联?程序运行正常,但是当我点击按钮时收到以下错误:
   File "kivy\weakproxy.pyx", line 32, in kivy.weakproxy.WeakProxy.__getattr__

AttributeError: 'FloatLayout' object has no attribute 'btnTestEnviron'

    File "kivy\weakproxy.pyx", line 32, in kivy.weakproxy.WeakProxy.__getattr__

AttributeError: 'FloatLayout' object has no attribute 'btnClose'

【问题讨论】:

    标签: python kivy kivy-language


    【解决方案1】:

    您没有在 Layout 类中定义按钮功能 这是正确的代码:

    from kivy.app import App
    from kivy.uix.floatlayout import FloatLayout
    
    class FloatLayout(FloatLayout):
        def btnTestEnviron(self):
            print("Print this on console")
    
        def btnClose(self):
            App.get_running_app().stop()
    
    class MyGeneralFormApp(App):
        def build(self):
            return FloatLayout()
    
        
    
    if __name__ == "__main__":
        MyGeneralFormApp().run()
    

    【讨论】:

      猜你喜欢
      • 2020-01-22
      • 2018-08-16
      • 1970-01-01
      • 1970-01-01
      • 2018-08-16
      • 1970-01-01
      • 2016-05-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多