【问题标题】:Initiating multiple widgets in Kivy在 Kivy 中启动多个小部件
【发布时间】:2016-07-19 03:14:54
【问题描述】:

把它想象成 main.py:

class Widget1(Button):
    pass

class Widget2(ButtonBehavior, Image):
    pass

在.kv文件里面:

<Widget1>:
    Button:

<Widget2>:
    Image:

如何在主文件中同时初始化Widget1 和Widget2?创建单独的Apps 不起作用。

【问题讨论】:

    标签: python user-interface kivy


    【解决方案1】:

    这样试试

    class Widget1(Button)
        pass
    
    class Widget2(ButtonBehavior, Image)
        pass
    
    class MyMain(Widget):
        pass
    
    class MyApp(App):
        def build(self):
            return MyMain()
    
    MyApp().run()
    

    和你的孩子

    <MyMain>:
        <Widget1>:
            Button:
    
        <Widget2>:
            Image:
    

    【讨论】:

      【解决方案2】:

      为什么要将另一个Button 和Image 放在继承它的小部件中?在我看来是这样的:

      创建按钮 → 将另一个按钮放入该按钮小部件

      你不想这样。并且绝对不会在规则中创建规则 - 在 python 中几乎没有类似的东西:

      def foo():
          def bar():
              ...
          ...
      

      有一些用例,但不是这样。 :P 我也没有看到像这样创建它的意义:

      <MyMain>:
          <Widget1>:
              Button:
      
          <Widget2>:
              Image:
      

      因为您必须以这种方式将它与 python 文件连接(它需要一个类)。其他的会是&lt;MyWidget@Button&gt;:

      但是,有一种更简单的方法可以做到这一点,并且不需要额外的(在这种情况下是空的)类:

      from kivy.app import App
      from kivy.uix.image import Image
      from kivy.uix.button import Button
      from kivy.uix.boxlayout import BoxLayout
      from kivy.uix.behaviors import ButtonBehavior
      
      class Widget1(Button):
          pass
      
      class Widget2(ButtonBehavior, Image):
          pass
      
      class MyApp(BoxLayout, App):
          def build(self):
              self.add_widget(Widget1())
              self.add_widget(Widget2())
              return self
      
      MyApp().run()
      

      这样您就不需要创建另一个类作为占位符,如果您使用一些小东西,这非常方便。我不确定在MyApp 中继承顺序,但它似乎适用于BoxLayout, App 和App, BoxLayout 情况。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-05-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多