【问题标题】:Kivy - Two sliders in a layoutKivy - 布局中的两个滑块
【发布时间】:2017-08-04 12:54:22
【问题描述】:

我正在尝试在布局中使用两个滑块。代码如下。问题是只有第二个滑块响应鼠标操作。第一个滑块(以及按钮)根本不响应鼠标操作。如何使两个滑块都响应? 提前致谢

from kivy.app import App
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.slider import Slider
from kivy.uix.button import Button

def Exit(instance):
    print('Exit the screen')
    App.get_running_app().stop()

def MainScreen():
    flt = FloatLayout()

    button = Button(text='Hello Kivy World')
    button.size = (200, 100)
    button.size_hint = (None, None)
    button.pos_hint = {'center_x': .5, 'center_y': .2}
    button.bind(on_press=Exit)
    flt.add_widget(button)

    slid1 = Slider()
    slid1.id = 'Slider 01'
    slid1.size_hint_x = .75
    slid1.pos_hint = {'x': .125, 'center_y': .5}
    slid1.value_track = True
    slid1.value_track_color = [0, 1, 0, 1]
    slid1.sensitivity = 'handle'
    flt.add_widget(slid1)

    slid2 = Slider()
    slid2.id = 'Slider 02'
    slid2.size_hint_x = .75
    slid2.pos_hint = {'x': .125, 'center_y': .75}
    slid2.value_track = True
    slid2.value_track_color = [1, 0, 0, 1]
    slid2.sensitivity = 'handle'
    flt.add_widget(slid2)

    return flt

class MainApp(App):

    def build(self):
        return MainScreen()

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

【问题讨论】:

  • 如果您单击应用程序的最底部,则第二个滑块处于活动状态。真奇怪

标签: python slider kivy


【解决方案1】:

如果您将floatlayout 更改为boxlayout,它会起作用。

flt = BoxLayout(orientation='vertical')

【讨论】:

  • 是的,确保它可以在上面显示的最小代码中工作,谢谢,但实际上即使将 FloatLayout 更改为 BoxLayout 后,它也不能在我的原始代码中工作。我将使用您的提示进一步探索
  • 我认为您的小部件重叠。我会尝试将每个放在单独的 BoxLayout 中并设置大小以确保它们不会重叠。
  • 是的,将整体布局设置为 BoxLayout 使两个滑块都具有响应性。它甚至可以在我的生产代码中使用。但是,在 BoxLayout 中组织我的小部件是一项乏味的任务。无论如何,非常感谢您查看我的代码
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-13
  • 2018-08-27
相关资源
最近更新 更多