【发布时间】:2014-06-15 19:30:44
【问题描述】:
import kivy
from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.anchorlayout import AnchorLayout
from kivy.uix.gridlayout import GridLayout
class body(BoxLayout):
def __init__(self, **kwargs):
super(body,self).__init__(**kwargs);
self.orientation = 'vertical';
lst = ['button'];
cont = len(lst);
for d in lst:
eval('self.'+d+'()');
self.add(cont);
def button(self):
self.hLayout_1 = AnchorLayout(orientation='horizontal');
self.button_1 = Button(text='conectar',size_hint=(None,None),size=(100,100));
self.button_2 = Button(text='enviar',size_hint=(None,None),size=(100,100));
self.hLayout_1.add_widget(self.button_1);
self.hLayout_1.add_widget(self.button_2);
def add(self,num):
for n in range(num):
eval('self.add_widget(self.hLayout_'+str(n+1)+')');
class Client(App):
def build(self):
b = body();
return b
Client().run();
按钮让我一个接一个,当我解决这个问题时?
或者也可以使用网格布局
import kivy
from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.anchorlayout import AnchorLayout
from kivy.uix.gridlayout import GridLayout
class body(BoxLayout):
def __init__(self, **kwargs):
super(body,self).__init__(**kwargs);
self.pos_hint={'center_x':.5}
self.orientation = 'vertical';
lst = ['button'];
cont = len(lst);
for d in lst:
eval('self.'+d+'()');
self.add(cont);
def button(self):
self.hLayout_1 = GridLayout(cols=2);
self.button_1 = Button(text='conectar',size_hint=(None,None),size=(100,100));
self.button_2 = Button(text='enviar',size_hint=(None,None),size=(100,100));
self.hLayout_1.add_widget(self.button_1);
self.hLayout_1.add_widget(self.button_2);
def add(self,num):
for n in range(num):
eval('self.add_widget(self.hLayout_'+str(n+1)+')');
class Client(App):
def build(self):
b = body();
return b
Client().run();
我可以正确聚焦两个按钮吗?
我尝试了各种布局,但都没有成功,可能是因为还不太明白,sirver "size_hint" 感谢一些帮助。
【问题讨论】:
-
1) 你问的是如何让两个按钮并排显示?不太确定你想要什么。 2) 你不应该在 Python 中使用分号 (
;) - 它们只用于将多个语句放在一行上,无论如何这是不好的形式。 3)eval()速度慢且不安全。使用getattr()通过字符串获取属性。 -
如果我想要一个紧挨着另一个的按钮,并且两个在中间,专注于一个布局,假装不生气,我会尽量不放;最后,还要感谢“eval()”,我将使用 getattr()。那么如何才能并排出现在中心呢?什么是正确的布局?