我当前正在尝试创建一个选项菜单,该菜单可能会更改应用程序中特定文本块的文本大小。我基本上希望有三个不同的选项供用户选择。
我尝试修改kivy-examples中的代码,该示例使您可以使用数字值来更改font_size,而可以使用选项来更改字体大小。但是我无法使其正常工作,所以有点卡住了。
这是我的应用程序类
class MainApp(App):
def build(self):
self.settings_cls = SettingsWithTabbedPanel
root = Builder.load_file('main.kv')
label = root.ids.label
label.font_size = float(self.config.get('example', 'typesize'))
return root
def build_config(self, config):
config.setdefaults('example', {
'typesize': 'Default'})
def build_settings(self, settings):
settings.add_json_panel('Settings', self.config, data=settings_json)
def on_config_change(self,config,section,key,value):
Logger.info("main.py: App.on_config_change: {0}, {1}, {2}, {3}".format(
config, section, key, value))
if section == 'example':
if key == 'typesize':
if value == 'Small':
self.root.ids.label.font_size = '12pt'
elif value == 'Default':
self.root.ids.label.font_size = '20pt'
elif value == 'Large':
self.root.ids.label.font_size = '40pt'
def close_settings(self, settings=None):
"""
The settings panel has been closed.
"""
Logger.info("main.py: App.close_settings: {0}".format(settings))
super(MyApp, self).close_settings(settings)
这是我尝试使用的一些奇特的语言(在另一个文档中)。 (缩进在这里看起来有点奇怪,但是当我将其复制到此处时有点不客气)
BoxLayout:
orientation:'horizontal'
BoxLayout:
size_hint_x: .5
orientation:'horizontal'
ScrollView:
Label:
id:label
text: ' some really really long string ' * 100
text_size: self.width, None
size_hint_y: None
height: self.texture_size[1]
这是我的json代码(同样在单独的文档中),因为我可能想创建更多设置。
import json
settings_json = json.dumps([
{'type': 'options',
'title': 'Text size',
'desc': 'Change the size of text in the application',
'section': 'example',
'key': 'typesize',
'options': ['Small', 'Default', 'Large']}])
当我尝试立即运行程序时,崩溃或无法启动。