gpt4 book ai didi

python - 防止 TabbedPanel 在动画期间重绘

转载 作者:行者123 更新时间:2023-12-01 07:45:15 25 4
gpt4 key购买 nike

非常感谢任何帮助。

这是一个显示问题的示例代码,当按下(“按我”)按钮并调整小部件大小( View 中出现白色框)时,TabbedPanel 会像小故障一样重新绘制(尽管事实并非如此)。

我尝试过更改布局顺序并尝试了一下动画,没有

我希望防止左侧选项卡面板的闪烁行为。

import kivy
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.animation import Animation
from kivy.lang import Builder

Builder.load_string('''
<Main>:
BoxLayout:
orientation:'vertical'
BoxLayout:
id: main_screen
orientation: 'horizontal'
TabbedPanel:
do_default_tab: False
tab_pos: 'left_top'
tab_width: main_screen.height/4
TabbedPanelItem:
text: 'four'
TabbedPanelItem:
text: 'three'
TabbedPanelItem:
text: 'two'
TabbedPanelItem:
text: 'one'
BoxLayout:
id: swidget
slide: 0
size_hint: None, None
height: main_screen.height
width: self.slide
canvas:
Color:
rgba: 1,1,1,1
Rectangle:
pos: self.pos
size: self.size
Button:
size_hint_y: None
height: '33dp'
text: 'Press me'
on_release: root.display_widget(swidget)
''')

class Main(BoxLayout):
def __init__(self, **kwargs):
super(Main, self).__init__(**kwargs)

def display_widget(self, widget):
swidget = widget

if swidget.slide == 0:
anim = Animation(slide=105, duration=0.6)
anim.start(widget)
else:
anim = Animation(slide=0, duration=0.6)
anim.start(widget)


class TabbedApp(App):
def build(self):
return Main()


TabbedApp().run()

最佳答案

添加AnchorLayout作为 swidget/BoxLayout 的父级,当动画开始时,它不会影响实例化的 TabbedPanel

片段

        AnchorLayout:
anchor_x: 'right'
anchor_y: 'top'
size_hint_x: None
width: 0

BoxLayout:
id: swidget
slide: 0
size_hint_x: None
width: self.slide
canvas:
Color:
rgba: 1,1,1,1
Rectangle:
pos: self.pos
size: self.size

关于python - 防止 TabbedPanel 在动画期间重绘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56494890/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com