如何控制Kivy设置面板中设置菜单列表中菜单项名称的字体大小

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

我尝试在我的应用程序中使用Kivy设置面板,但我发现某些设置面板项的字体大小与我的应用程序中的字体大小设置相关,目前我无法直接设置设置面板的字体大小。在我的应用程序中为了显示效果它使用了很大的字体大小,然后在设置面板中其菜单列表和选项列表的部分名称将使用与应用程序相同的字体大小,这使得设置面板的外观非常奇怪(无法接受) ).

以下代码是 Kivy 分散示例(来自 geeksforgeeks.org)

scattertest.py 文件

import kivy 
from kivy.app import App
kivy.require('1.9.0')  
from kivy.uix.scatter import Scatter 
from kivy.uix.widget import Widget
from kivy.uix.relativelayout import RelativeLayout 

from kivy.uix.settings import SettingsWithSidebar, SettingsWithTabbedPanel
from kivy.logger import Logger

class SquareWidget(Widget): 
    pass

class ScatterWidget(Scatter): 
    pass

class ScatterTest(RelativeLayout): 
    pass

class ScatterTestApp(App): 

    def build(self):                
        self.settings_cls = SettingsWithTabbedPanel
        # self.settings_cls = SettingsWithSidebar
        return ScatterTest()

    def app_open_settings(self):
        App.open_settings(self)

    def close_settings(self, settings=None):
        Logger.info("scattertest.py: App.close_settings: {0}".format(settings))
        super(ScatterTestApp, self).close_settings(settings)

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

scattertest.kv 文件

#:kivy 2.1.0

<Label>:
    font_size:50

<SquareWidget>: 
    size: 100, 100
    canvas: 
        Color: 
            rgb: [0.345, 0.85, 0.456] 
        Rectangle: 
            size: self.size 
            pos: self.pos 

<ScatterTest>:
    canvas: 
        Color: 
            rgb: .8, .5, .4
        Rectangle: 
            size: self.size 
            pos: self.pos   

    ScatterWidget: 
        id: square_widget_id  
   
        SquareWidget: 

    Label:
        text: 'Position: ' + str(square_widget_id.pos) 
        size_hint: .1, .1
        pos: 500, 300

在上面的示例中,我在

当按下“F1”键时,它将显示设置面板,在这里我使用 TabbedPanel 样式设置设置面板,我们可以看到面板选项卡名称使用字体大小 50,并且在选项部分中也显示了部分名称使用字体大小 50。这让我们感觉设置面板出了问题(所有这些问题项都应该基于 Label 类)。

我阅读了Kivy设置文档,但我找不到直接设置设置面板字体大小的好方法。

我尝试在 .kv 文件中设置自定义标签小部件,例如将

希望可以帮助我得到更好的解决方案,谢谢!

python kivy settings font-size
1个回答
0
投票

我找到了一种方法可以解决我的问题,那就是修改Kivy style.kv文件中与某些小部件相关的一些设置(Kivy style.kv位于...\Lib\site_packages\kivy\ data 目录),有关此解决方案的参考如下(按我的参考顺序),

  1. 通过重新定义style.kv来自定义Kivy设置面板
  2. https://kivy.org/doc/stable/api-kivy.lang.html#redefining-a-widget-s-style
  3. 如何在Kivy中自定义style.kv

这个解决方案的基础应该是参考#2,它是Kivy文档“Kivy Language”中的“Redefining a widget's style”部分,它指出我们可以重新定义一个widget的一些属性,即我们可以继承这些属性一个小部件的属性,并且没有一些将使用我们自己的定义的其他属性。这种方法是在 .kv 文件中定义修改后的小部件(注意小部件名称前的破折号“-”)

<-widgetname>:
    redefined properties

基本上这种方式就是制作一个自定义小部件,原则上它与我的问题中的解决方案相同。如果我们不修改很多设置项,只想保留设置面板的默认设置,那么我的解决方案就更简单了。

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