【问题标题】:Kivy custom widget instanciated twiceKivy 自定义小部件实例化了两次
【发布时间】:2016-09-27 01:07:10
【问题描述】:

我正在尝试构建一个包含两个滑块的简单 Kivy 自定义小部件。 渲染屏幕时,我得到两对滑块而不是一对。

我做错了什么?

Main.kv:

ScreenManagement:
    MainScreen:

<Button>:
    size_hint: .2, .1
    font_size: 20

<Mixer>:
    orientation:'vertical'
    Slider:
        min:0
        max:127
        value:64
    Slider:
        min:0
        max:127
        value:100

<MainScreen>:
    name: "mainscreen"
    Mixer:
    FloatLayout:
        Button:
            text: "Exit"
            pos: root.width - self.width, 0
            on_release: app.stop()

Main.py:

import kivy
kivy.require("1.9.1")

from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.uix.boxlayout import BoxLayout

class ScreenManagement(ScreenManager):
    pass

class Mixer(BoxLayout):
    pass

class MainScreen(Screen):
    pass

class MainApp(App):
    def build(self):
        return Builder.load_file("Main.kv")

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

感谢您的帮助!

【问题讨论】:

  • 我运行了你的代码,我可以看到两个滑块和一个按钮。
  • 天哪!感谢您的反馈意见;然后可能是由于我的 Python 配置/版本。我在 Windows 10 上使用最新的 Kivy (1.9.1) 运行 Python 2.7.12。尽管我不得不提到我的 Raspberry Pi 上的结果是相同的(4 个滑块而不是两个)。很奇怪。
  • 尝试将 kv 文件重命名为 ,,main.kv'' 并且不要在 build 方法中显式加载它。它应该会自动加载。
  • @jligeza :非常感谢,这完全成功了! ;)
  • 让我重写答案,方便以后的读者搜索。

标签: python user-interface kivy


【解决方案1】:

您应该将 kv 文件重命名为main.kv,并在build 方法中删除它的显式加载。它会自动加载自己。这个错误很奇怪,也许值得一张票。

【讨论】:

  • 还是这样。
猜你喜欢
  • 2014-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-02
  • 1970-01-01
  • 1970-01-01
  • 2017-09-23
  • 1970-01-01
相关资源
最近更新 更多