Kivy 1.10.1 Slider复制自己

问题描述 投票:0回答:1

我目前正在尝试创建一个简单的Slider来控制应用程序中文本的大小。我遇到的问题是,即使滑块按我的意图运行,它似乎在第一个滑块下创建了另一个版本,无法移动。您可以在提供的图像中看到它的外观here [替代文字:显示kivy滑块的基本用户界面的屏幕截图。滑块已在其后方向前移动,在默认位置有另一个副本](如您所见,BoxLayout内的Label文本也会重叠)。我目前正在使用Kivy 1.10.1和Python 3.7.2。

这是我的Python脚本:

 # -*- coding: utf-8 -*-
import kivy
kivy.require('1.10.1')
from kivy.app import App
from kivy.core.window import Window
from kivy.lang import Builder
from kivy.uix.boxlayout import BoxLayout
from kivy.properties import ObjectProperty
from kivy.uix.actionbar import ActionBar
from kivy.uix.screenmanager import ScreenManager, Screen, FadeTransition
from kivy.graphics.vertex_instructions import (Rectangle, Ellipse, Line)
from kivy.graphics.context_instructions import Color
from kivy.uix.checkbox import CheckBox
from kivy.uix.slider import Slider

#Window.size = (360/1.2,740/1.2)

class HomeScreen(Screen):
    pass

class OptionsScreen(Screen):
    pass

class TutorialScreen(Screen):
    pass

class ScreenController(ScreenManager):
    pass

look = Builder.load_file('main.kv')

class MainApp(App):
    def build(self):
        return look

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

这里是相关的Kivy语言,旨在创建我的滑块

<OptionsScreen>
name: 'option'

BoxLayout:
    orientation:'vertical'
    BoxLayout:
        orientation:'horizontal'
        size_hint_y: 1/3
        Label:
            text:'Text size'
            font_size: textsize.value
            size_hint_x:.5
        Slider:
            id:textsize
            min: 5
            max: 25
            value:15
            step: 1
            size_hint_x:.5

虽然如果你想阅读整个Kivy语言文档,我也会在这里发布它。

    #: import FadeTransition kivy.uix.screenmanager.FadeTransition
# Reference main.py
#: import main main
#: import Slider kivy.uix.slider
#: import ActionBar kivy.uix.actionbar
#: import Window kivy.core.window
ScreenController:
    transition: FadeTransition()
    HomeScreen:
    OptionsScreen:
    TutorialScreen:

<HomeScreen>
    name: 'home'
    BoxLayout:
        id:'hem'
        orientation:'vertical'
        BoxLayout:
            size_hint_x: 1
            orientation:'horizontal'
            canvas:
                Color:
                    rgba: 0,1,0,1
                Rectangle
                    size: self.size
                    pos: self.pos
        BoxLayout:
            orientation:'horizontal'
            BoxLayout:
                size_hint_x: .5
                orientation:'horizontal'
                canvas:
                    Color:
                        rgba: 1,0,1,1
                    Rectangle
                        size: self.size
                        pos: self.pos
            BoxLayout:
                size_hint_x: .5
                orientation:'horizontal'
                canvas:
                    Color:
                        rgba: 1,1,0,1
                    Rectangle
                        size: self.size
                        pos: self.pos

    ActionBar:
        pos_hint: {'top':1}

        ActionView:
            use_separator: True
            ActionPrevious:
                title: 'Fredde & Kribbas kivy'
                with_previous: False
            ActionOverflow:
            ActionGroup:
                text: 'Group1'
                ActionButton:
                    text: 'home'
                    on_touch_down: app.root.current = 'home'
                ActionButton:
                    text: 'Options'
                    on_touch_down: app.root.current = 'option'
                ActionButton:
                    text: 'Tutorial'
                    on_touch_down: app.root.current = 'tut'

<OptionsScreen>
    name: 'option'

    BoxLayout:
        orientation:'vertical'
        BoxLayout:
            orientation:'horizontal'
            size_hint_y: 1/3
            Label:
                text:'Text size'
                font_size: textsize.value
                size_hint_x:.5
            Slider:
                id:textsize
                min: 5
                max: 25
                value:15
                step: 1
                size_hint_x:.5
        BoxLayout:
            #fontsize checkbox
            orientation:'horizontal'
            size_hint_y: 1/3
            BoxLayout:
                orientation:'vertical'
                Label:
                    text: 'Nightmode'
                CheckBox:
                    id:default
                    size_hint_y: None
                    active: True
                    height:'50dp'
                    group:'g1'
            BoxLayout:
                orientation:'vertical'
                Label:
                    text: 'Daymode'

                CheckBox:
                    id:stor
                    size_hint_y: None
                    height:'50dp'
                    group:'g1'
        BoxLayout:
            orientation:'horizontal'
            size_hint_y: 1/3
            canvas:
                Color:
                    rgba: 0,0,1,1
                Rectangle
                    size: self.size
                    pos: self.pos

    ActionBar:
        pos_hint: {'top':1}
        ActionView:
            use_separator: True
            ActionPrevious:
                title: 'Fredde & Kribbas kivy'
                with_previous: False
            ActionOverflow:

            ActionGroup:
                text: 'Group1'
                ActionButton:
                    text: 'home'
                    on_touch_down: app.root.current = 'home'
                ActionButton:
                    text: 'Options'
                    on_touch_down: app.root.current = 'option'
                ActionButton:
                    text: 'Tutorial'
                    on_touch_down: app.root.current = 'tut'
<TutorialScreen>
    name: 'tut'

    ActionBar:
        pos_hint: {'top':1}
        ActionView:
            use_separator: True
            ActionPrevious:
                title: 'Fredde & Kribbas kivy'
                with_previous: False
            ActionOverflow:

            ActionGroup:
                text: 'Group1'
                ActionButton:
                    text: 'home'
                    on_touch_down: app.root.current = 'home'
                ActionButton:
                    text: 'Options'
                    on_touch_down: app.root.current = 'option'
                ActionButton:
                    text: 'Tutorial'
                    on_touch_down: app.root.current = 'tut'

有谁知道我为什么会遇到这个问题?我对kivy很新,但我之前玩过滑块,直到现在才遇到这些问题。

python python-3.x kivy kivy-language
1个回答
0
投票

你不需要在你的python代码中加载你的kv文件,因为你已经将你的kv文件命名为main.kv

您可以尝试删除此行:

look = Builder.load_file('main.kv')

并改变这一行:

return look

至:

pass
© www.soinside.com 2019 - 2024. All rights reserved.