python - 如何在 Kivy 中获取大小提示以应用于布局元素而不是窗口
问题描述
我有以下带有示例窗口大小的代码。我希望所有小部件都进入一个BoxLayout
被调用的inlay
. 但是,无论我将提示放在哪里或如何附加小部件,提示仍然适用于整个窗口。
如代码所示,对于 (500, 600) 的窗口,嵌体的尺寸应仅为 (480, 600),即最接近的 8 x 10 尺寸。但是,提示是针对 (500, 600) 大小呈现的:
from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.boxlayout import BoxLayout
from kivy.core.window import Window
Window.size = (500, 600)
class SCApp(App):
def build(self):
# Define the (relative) 8 x 10 inlay for the board.
for n in range(8, Window.width, 8):
if n * 1.25 <= Window.height:
inlay_dims = (n, int(n * 1.25))
print(inlay_dims)
else:
break
inlay = BoxLayout(orientation="vertical")
inlay.size = inlay_dims
top_portion = BoxLayout(orientation="horizontal")
inlay.add_widget(top_portion)
top_portion.size_hint = (1, 0.1)
top_portion.add_widget(widget=Button())
mid_portion = BoxLayout(orientation="horizontal")
inlay.add_widget(mid_portion)
mid_portion.size_hint = (1, 0.8)
btm_portion = BoxLayout(orientation="horizontal")
inlay.add_widget(btm_portion)
btm_portion.size_hint = (1, 0.1)
top_portion.add_widget(widget=Button())
return inlay
SCApp().run()
如何使_portion
布局的大小提示评估为给定的大小inlay
?
解决方案
使用 时size
,通常还必须使用size_hint=(None, None)
as size_hint
will override size 设置。所以尝试更换:
inlay = BoxLayout(orientation="vertical")
和:
inlay = BoxLayout(orientation="vertical", size_hint=(None, None))
推荐阅读
- python - 遍历python3中的json文件
- linux - Raspberry Pi 上的组装为每个命令提供错误“找不到命令”
- php - 如何检测链接点击?
- node.js - 获取或搜索 npm 中的可执行文件列表
- embedded - 链接器脚本文件和链接器生成的 .map 文件之间的区别?
- python - 将 3D 数组转换为 pandas 面板数据
- css - 为什么没有填充,尽管我在 react native 中使用带有 `space-between` 的 flexbox 时设置了它?
- function - Same PowerShell Code Works as Seperate File, Not as Function
- spring - 如何在@ExceptionHandler 方法中检索 POST 请求对象/参数
- python - Python将数据框转换为逗号分隔的行