【发布时间】:2016-09-30 00:53:51
【问题描述】:
我正在使用 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 语言以更简单的方式完成,但对于我的应用来说,最好以这种方式完成。如果有人知道如何解决这个问题,我将不胜感激。
【问题讨论】:
标签: python button height kivy grid-layout