我正在和kivy一起使用一个应用程序,我遇到了一个涉及GridLayout
的问题。我有一个具有不同行的屏幕,我希望最后一行的按钮总是相同的height
(屏幕高度的11,1%)。我试图修改按钮中的属性高度,但无法正常工作。使用size_hint_y
可以很好地工作,但事实上我想使用height
来完成,因为屏幕不会总是有相同的行数(是响应的,它取决于以前屏幕的选择)。我在这里附加了通过命令Window.height/9
计算的属性高度的代码:
from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.gridlayout import GridLayout
from kivy.uix.textinput import TextInput
from kivy.uix.button import Button
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.core.window import Window
class LoginScreen(GridLayout):
def __init__(self,**kwargs):
super(LoginScreen, self).__init__(**kwargs)
self.cols=2
self.add_widget(Label(text='Subject'))
self.add_widget(Label(text=''))
self.add_widget(Label(text='1'))
self.add_widget(TextInput(multiline=False))
self.add_widget(Label(text='2'))
self.add_widget(TextInput(multiline=False))
self.add_widget(Label(text='3'))
self.add_widget(TextInput(multiline=False))
self.add_widget(Label(text='4'))
self.add_widget(TextInput(multiline=False))
b1=Button(text='Exit',background_color=[0,1,0,1],height=int(Window.height)/9.0) #doesn't work properly
self.add_widget(b1)
b2=Button(text='Run',background_color=[0,1,0,1],height=int(Window.height)/9.0) #doesn't work properly
self.add_widget(b2)
b1.bind(on_press=exit)
class SimpleKivy(App):
def build(self):
return LoginScreen()
if __name__=='__main__':
SimpleKivy().run()
我知道用kivy语言可以更容易地完成,但对于我的应用程序来说,用这种方式更好。如果有人知道如何解决这个问题,我将非常感激。
如果希望网格/框布局中的小部件具有固定大小,则应首先将其
size_hint
设置为None
。在这样的任务中总是使用kivy lang——没有例外。试试这个
编辑后将其更改为11%。
这里是一个保持按钮11%以响应窗口大小的按钮,在窗口大小调整时(通过绑定到“on_resize”)可以重新绘制网格层。
相关问题 更多 >
编程相关推荐