Kivy-在另一个屏幕上更改滑块类的值

关注

我有一个滑块,该滑块的值会更改标签。这很容易理解。现在的问题是我想使用此值在另一个屏幕上显示。最终,我希望滑块在另一个屏幕上显示1-16张图像,具体取决于滑块上选择的值。以下是我目前的情况,该屏幕在该屏幕上效果很好,但是如何获取此值以显示在另一个屏幕上?我知道我必须创建一个类,该类已经进行了多次尝试,并且每次尝试都比让我更好地理解它使我更加困惑。

<NewGameScreen>:
    name: 'newgame'
    BoxLayout:
        orientation: 'vertical'
        height: 100       

        Label:
            text: 'New Game'
            font_size: 70
                Label:
                    text: 'Players'
                    font_size: 30
                    pos: 300, 400

                Slider:
                    id: s1
                    pos: 420, 400
                    width: '250dp'
                    min: 1
                    max: 16
                    step: 1
                    value: 1
                    on_value: s1.value = self.value

                Label:
                    text: '{}'.format(s1.value)
                    font_size: 30
                    pos: 670, 400
尼卡金

您可以通过底层传递值ScreenManager一个工作示例:

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

kv = '''
<NewGameScreen>:
    name: 'newgame'
    BoxLayout:
        orientation: 'vertical'

        Slider:
            id: s1
            min: 1
            max: 16
            step: 1
            value: 1
            on_value: 
                root.manager.get_screen('options').label.text = str(self.value)
        Button:
            text: 'Options'
            on_press: 
                root.manager.transition.direction = 'left'
                root.manager.current = 'options'

<OptionScreen>:
    label: label
    name: 'options'
    orientation: 'vertical'
    BoxLayout:
        Button:
            text: 'Go back'
            on_press: 
                root.manager.transition.direction = 'right'
                root.manager.current = 'newgame'

        Label:
            id: label
            text: '1'

'''
Builder.load_string(kv)

class NewGameScreen(Screen):
    pass

class OptionScreen(Screen):
    pass

class TestApp(App):
    def build(self):
        sm = ScreenManager()
        sm.add_widget(NewGameScreen())
        sm.add_widget(OptionScreen())
        return sm

if __name__ == '__main__':
    TestApp().run()

更新:

扩展示例(基于滑块值添加按钮):

from kivy.app import App
from kivy.lang import Builder
from kivy.uix.button import Button
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.properties import ObjectProperty

kv = '''
#:import Label kivy.uix.label.Label
<NewGameScreen>:
    name: 'newgame'
    slider: slider
    BoxLayout:
        orientation: 'vertical'

        Slider:
            id: slider
            min: 1
            max: 16
            step: 1
            value: 1
            on_value: root.update_buttons()

        Button:
            text: 'Options'
            on_press: 
                root.manager.transition.direction = 'left'
                root.manager.current = 'options'

<OptionScreen>:
    layout: layout
    name: 'options'
    BoxLayout:
        Button:
            text: 'Go back'
            on_press: 
                root.manager.transition.direction = 'right'
                root.manager.current = 'newgame'
        BoxLayout:
            orientation: 'vertical'
            id:layout
            Button:
                text: "1"

'''
Builder.load_string(kv)

class NewGameScreen(Screen):
    slider = ObjectProperty(None)
    def update_buttons(self, *args):
        layout = self.manager.get_screen('options').layout
        layout.clear_widgets()
        for i in range(int(self.slider.value)):
            layout.add_widget(Button(text=str(i+1))) 


class OptionScreen(Screen):
    layout = ObjectProperty(None)


class TestApp(App):
    def build(self):
        sm = ScreenManager()
        sm.add_widget(NewGameScreen())
        sm.add_widget(OptionScreen())
        return sm

if __name__ == '__main__':
    TestApp().run()

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用Kivy中的按钮在另一个屏幕上创建标签

来自分类Dev

Python和Kivy:从另一个屏幕获取值以设置按钮的on_release值

来自分类Dev

从Kivy中的另一个类调用函数

来自分类Dev

从另一个类kivy的TextInput获取数据

来自分类Dev

在Kivy中引用另一个类的函数

来自分类Dev

从另一个线程更改kivy属性

来自分类Dev

通过在另一个屏幕中按按钮来更改Kivy按钮小部件属性

来自分类Dev

Python/Kivy:将变量从一个类传递到另一个类

来自分类Dev

Kivy-将标签的文本绑定到另一个类中的变量

来自分类Dev

如何在Kivy语言的另一个类中调用函数?

来自分类Dev

如何在Kivy中引用另一个类方法

来自分类Dev

Kivy:函数\方法不能从另一个类工作

来自分类Dev

从另一个小部件更改Kivy小部件属性

来自分类Dev

更改Kivy滑块颜色

来自分类Dev

Kivy:你能在另一个 BoxLayout 中细分一个 BoxLayout 吗?

来自分类Dev

Kivy:从另一个弹出窗口中关闭一个弹出窗口

来自分类Dev

从FileWatch上的另一个类更改值

来自分类Dev

Kivy:更改屏幕上的图像源

来自分类Dev

如何使用来自另一个kivy应用程序的参数启动kivy应用程序

来自分类Dev

在一个屏幕内的kivy类之间切换

来自分类Dev

从 Python 端的一个类访问多个 kivy 类

来自分类Dev

Kivy:返回动画 gif,然后调用另一个 def

来自分类Dev

Kivy 用另一个小部件的文本填充画布对象

来自分类Dev

如何从 kivy 中的另一个页面删除小部件

来自分类Dev

Kivy禁用屏幕超时

来自分类Dev

Kivy未知类<NavigationDrawerIconButton>

来自分类Dev

Kivy:类中的变量?

来自分类Dev

在Android上运行Kivy

来自分类Dev

Appveyor 上的 Kivy PyInstaller

Related 相关文章

热门标签

归档