【发布时间】:2014-08-30 05:55:33
【问题描述】:
我正在使用锚布局来保存小部件,我的小部件是一个网格布局,问题是,我想要一个紧凑的登录显示 UI,但是,我得到了 3 个控件,最后还有注销按钮,所有这些都不在一起(不应该有太多的间距)并且应该在锚布局中居中。
我知道它看起来不太好:
代码如下:
主.py:
from kivy.app import App
from formcontrol import FormControl
class MyApp(App):
def build(self):
self.title="sample App"
self.formcontrol = FormControl()
return self.formcontrol
if __name__ == '__main__':
MyApp().run()
FormControl.py:
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.anchorlayout import AnchorLayout
from login.logincodes import LoginControl
from login.logincodes import AfterLogin
class FormControl(AnchorLayout):
'''
classdocs
'''
def __init__(self, **kwargs):
'''
Constructor
'''
super(FormControl,self).__init__(**kwargs)
c= LoginControl()
c.setparent(self)
self.add_widget(c)
def changewidget(self,to):
if to == 'AfterLogin':
self.clear_widgets()
self.add_widget(AfterLogin())
logincodes.py:
from kivy.uix.gridlayout import GridLayout
class LoginControl(GridLayout):
_parentwidget=None
def __init__(self, **kwargs):
super(LoginControl,self).__init__(**kwargs)
self.userid.text='Welcome'
def setparent(self,parent):
self._parentwidget=parent
def changewidget(self,to):
self._parentwidget.changewidget(to)
def login_pressed(self,button):
print(button.text)
print(self.userid.text)
print(self.userpw.text)
self.changewidget('AfterLogin')
def close_pressed(self,button):
print(button.text)
exit()
class AfterLogin(GridLayout):
def __init__(self,**kwargs):
super(AfterLogin,self).__init__(**kwargs)
my.ky 文件:
<LoginControl>:
rows: 3
cols: 1
userid: userid
userpw: userpw
BoxLayout:
size_hint_y: None
height: '32dp'
Label:
text: 'User ID'
TextInput:
id: userid
text: 'some password'
BoxLayout:
size_hint_y: None
height: '32dp'
Label:
text: 'Password'
TextInput:
id: userpw
password: True
text: 'some password'
Button:
text: 'Login'
on_press: root.login_pressed(self)
size_hint_y: None
height: '32dp'
Button:
text: 'Close'
on_press: root.close_pressed(self)
size_hint_y: None
height: '32dp'
<AfterLogin>:
rows: 1
Label:
text: 'Logged In'
请让我了解我在配置 UI 时出错的地方,我不想使用浮动布局,就像使用点来放置小部件一样。我对 Python 和 Kivy 都是新手。您的支持和建议对我来说很有价值,需要改进,
【问题讨论】:
标签: python python-3.x kivy