如何在Kivy中获取尺寸提示以应用于布局元素而不是窗口

问题描述

我有以下示例窗口大小的代码。我希望将所有小部件都放到名为import requests from bs4 import BeautifulSoup to_search = 'laptops' url = 'https://www.flipkart.com/search?q= {}&otracker=search&otracker1=search&marketplace=FLIPKART&as- show=on&as=off'.format(to_search) html_code = requests.get(url).text soup = BeautifulSoup(html_code,'lxml') titles = soup.findAll('div',class_='_3wU53n') for title in titles: print(title,end='\n') 的{​​{1}}中,而不是划分窗口的百分比。但是,无论我将提示放在何处或如何附加小部件,这些提示仍会应用于整个窗口。

代码所示,对于(500,600)窗口,嵌体的大小应仅为(480,600),最接近8 x 10的尺寸。但是,提示是针对(500,600)大小呈现的:

BoxLayout

如何使inlay布局的大小提示评估为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() 给出的大小?

解决方法

使用size时,通常还必须使用size_hint=(None,None),因为size_hint将覆盖尺寸设置。因此,请尝试更换:

    inlay = BoxLayout(orientation="vertical")

具有:

    inlay = BoxLayout(orientation="vertical",size_hint=(None,None))