0
在Kivy中,我试图在第一页上拉第二页后覆盖另一页。此时,列表中的单词有重叠,因为这些页面看起来很透明,而第二页不包含第一页。我试图改变小部件的背景颜色,但无济于事,甚至尝试在某个阶段添加背景图像。请帮忙,这已经占用了我足够的时间。如果可能的话,我会很感激纯Python代替kv语言的解决方案。例如:Kivy页面布局覆盖另一页以防止重叠
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.pagelayout import PageLayout
from kivy.uix.button import Button
from kivy.uix.label import Label
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.core.window import Window
from kivy.graphics import Color, Rectangle
# Window.clearcolor = (252, 235, 233, 0)
class MyScreenManager(ScreenManager):
pass
class PageLayoutScreen(Screen):
pass
class PageLayout1(PageLayout):
def __init__(self, **kwargs):
super(PageLayout1, self).__init__(**kwargs)
myList = ['hello there', 'hello to you too']
t = 0
for i in myList:
nameWdgt = Label(text="[b]" + myList[t] + "[/b]", markup=True, font_size='15sp')
locationWdgt = Label(text="[b]" + myList[t] + "[/b]", markup=True, font_size='15sp')
self.add_widget(nameWdgt)
self.add_widget(locationWdgt)
# below is my attempt to cover the first item in the list "hello there" when we pull the second item in the list over it "hello to you too"
with self.canvas.before:
Color(0, 1, 0, 1) # green; colors range from 0-1 instead of 0-255
self.profile_layout = Rectangle(size=self.size, pos=self.pos)
t += 1
root_widget = Builder.load_string('''
#:import NoTransition kivy.uix.screenmanager.NoTransition
#:import sys sys
MyScreenManager:
transition: NoTransition()
PageLayoutScreen:
<PageLayoutScreen>:
name: 'test'
PageLayout1
''')
class ScreenManagerApp(App):
def build(self):
return root_widget
ScreenManagerApp().run()
感谢@Mox您的解决方案的工作,但我发现了一块我失踪了只用蟒蛇与layout.canvas.add(颜色(0,1,0) )和layout.canvas.add(Rectangle(size =(100,100)))。它们在ScrollView中工作效果最好,以防有人在循环播放时遇到问题 – Jeff