我正在使用Kivy python库.
我定义了两个小部件.
程序运行时,我运行第一个小部件.
当按下该窗口小部件按钮时,我希望它消失并被第二个窗口小部件替换.
这是两个小部件的.kv
#uitest.kv
<TestForm>:
canvas:
Rectangle:
pos: self.center_x, 0
size: 10, self.height
BoxLayout:
size: root.size
padding: 40
Button:
text: 'Hello'
on_release: root.testCallback()
<TestForm2>:
canvas:
Rectangle:
pos: self.center_x, 0
size: self.height, 10
Run Code Online (Sandbox Code Playgroud)
我的主python文件运行应用程序,并返回第一个小部件
#main.py
from testform import TestForm
from kivy.app import App
class UITestApp(App):
def build(self):
return TestForm()
# Main launching point
if __name__ in ('__main__', '__android__'):
UITestApp().run()
Run Code Online (Sandbox Code Playgroud)
我的第一个小部件有一个回调.这是代码所属的地方
from testform2 import TestForm2
from kivy.uix.widget import Widget
class TestForm(Widget):
def testCallback(self):
TestForm2() # Code in question goes …Run Code Online (Sandbox Code Playgroud) 我正在开发一个Kivy项目,当列表中没有元素时,我需要显示一个标签.否则,我需要显示一个列表视图.
这些是我描述的两个场景:
这是我的Kivy文件:
#: kivy 1.9.1
#: import ListAdapter kivy.adapters.listadapter.ListAdapter
#: import FriendItemButton gui.FriendItemButton
ChumMeRoot:
<ChumMeRoot>:
friend_list_view: friend_list_view
FriendList:
id: friend_list_view
<FriendItemButton>:
text: self.full_name
height: "40dp"
size_hint_y: None
<FriendList>:
orientation: 'vertical'
friend_list: friend_list_view
Button:
height: '45dp'
size_hint_y: None
text: 'Add Friend'
on_press: app.root.show_add_friend_form()
ListView:
id: friend_list_view
adapter:
ListAdapter(
data=[],
cls=FriendItemButton,
args_converter=root.args_converter)
<AddFriendFormInput@BoxLayout>
height: '30dp'
size_hint_y: None
<AddFriendForm>:
orientation: 'vertical'
first_name_input: first_name
last_name_input: last_name
AddFriendFormInput:
Label:
text: 'First Name'
TextInput:
id: first_name
AddFriendFormInput:
Label:
text: 'Middle Name'
TextInput:
AddFriendFormInput: …Run Code Online (Sandbox Code Playgroud) 我想在Kivy中创建GridLayout,其中包含许多矩形按钮和一些不同大小的自定义图像.为此,我想缩放图像(我想要这样做的方式如下所示),然后裁剪/隐藏溢出小部件边框的部分.调整大小很好,但我无法弄清楚如何隐藏/裁剪矩形之外的部分.例如:如果小部件的尺寸为10px x 10px,而我的图像为100px x 200px,我将其重新调整为10px x 20px并将其置于小部件中,但是下方的5px和abowe将是可见的.我不要那个.:)云有人帮我解决这个问题?
class PlaceIcon(Widget):
def __init__(self,image_path, **kwargs):
super(PlaceIcon, self).__init__(**kwargs)
self.bind(size=self.adjust_size)
self.image = Image(source=image_path)
self.image_path = image_path
def adjust_size(self,*args):
(a,b) = self.image.texture.size
(x,y) = self.size
(x1,y1) = self.pos
if x > y:
scale = x/a
else:
scale = y/b
x1 -= (scale*a-x)/2
y1 -= (scale*b-y)/2
with self.canvas:
self.canvas.clear()
self.background = Rectangle(texture=self.image.texture, pos=(x1,y1), size=(scale*a,scale*b))
Run Code Online (Sandbox Code Playgroud)