[英]KIVY: how to have same set of widgets on multiple screens
I want to add same type of widgets on all of my screens. 我想在所有屏幕上添加相同类型的小部件。 and when one any of those added widgets is clicked, it is deleted from all screens.
单击其中任何一个添加的小部件时,将从所有屏幕中删除该小部件。 this is the current approach
这是当前的方法
def drinksSelect(self,value): # creating a button by referring the id of the layout in which to create button
drinkImagePath = {'pepsi': 'drinksPictures/pepsi.png','7up': 'drinksPictures/7up.png'}
if self.root.a_s.l < self.root.a_s.limit: # You know what I mean
st = 'number'
img = myImage(source= drinkImagePath[value], size=(200,20), id=st)
img2 = myImage(source=drinkImagePath[value], size=(200, 20), id='soo')
self.root.a_s.ids.place_remaining.add_widget(img)
self.root.m_s.ids.place.add_widget(img2)
self.root.a_s.l += 1
I am deleteing the image using this 我正在使用此删除图像
class myImage (Image):
def on_touch_down(self, touch):
if self.collide_point(*touch.pos):
self.parent.remove_widget(self)
The problem with that is that it only deletes the image that was clicked and not the ones on other screens. 这样做的问题在于,它仅删除单击的图像,而不删除其他屏幕上的图像。
Try this: 尝试这个:
def drinksSelect(self, value): # creating a button by referring the id of the layout in which to create button
drinkImagePath = {'pepsi': 'drinksPictures/pepsi.png', '7up': 'drinksPictures/7up.png'}
if self.root.a_s.l < self.root.a_s.limit: # You know what I mean
st = 'number'
img = myImage(source=drinkImagePath[value], size=(200, 20), id=st)
img2 = myImage(source=drinkImagePath[value], size=(200, 20), id='soo')
img.twin = img2
img2.twin = img
button.a_s = self.root.a_s
button2.a_s = self.root.a_s
self.root.a_s.ids.place_remaining.add_widget(img)
self.root.m_s.ids.place.add_widget(img2)
self.root.a_s.l += 1
class myImage(Image):
twin = ObjectProperty()
a_s = ObjectProperty()
def on_touch_down(self, touch):
if self.collide_point(*touch.pos):
self.parent.remove_widget(self)
self.twin.parent.remove_widget(self.twin)
self.a_s.l -= 1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.