Kivy 1.10.1 Slider复制自身

时间:2019-02-15 12:12:11

标签: python python-3.x kivy kivy-language

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

这是我的Python脚本:

try_me
smart(1) ctor got ptr: true
--------------
~smart(1) real delete: true
~try_me -- start --
smart(2) ctor got ptr: true
smart(3) move ctor from 2
~try_me -- end --
~smart(2) real delete: false
--------------
~smart(3) real delete: true
~try_me -- start --
smart(4) ctor got ptr: true
smart(5) move ctor from 4
smart(6) move ctor from 3
~smart(3) real delete: false
~try_me -- end --
~smart(4) real delete: false
free(): double free detected in tcache 2
Aborted (core dumped)

以下是相关的Kivy语言,旨在在我的

上创建滑块
 # -*- 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还是比较陌生,但是我以前玩过滑块,直到现在再也没有这些问题。

1 个答案:

答案 0 :(得分:0)

由于您已经将kv文件命名为main.kv,因此您无需在python代码中加载kv文件。

您可以尝试删除此行:

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

并更改此行:

return look

收件人:

pass