Python Kivy中的更新窗口
我想知道是否有可能在Kivy中更新窗口 我为什么需要这样做: 我想制作一个调整窗口大小的动画Python Kivy中的更新窗口,python,window,kivy,Python,Window,Kivy,我想知道是否有可能在Kivy中更新窗口 我为什么需要这样做: 我想制作一个调整窗口大小的动画 for i in range(100, 400): Window.size = (300, i) sleep(.01) 现在它只休眠3秒钟,然后调整大小 类似于Tkinter中的操作方式: 我和特金特一起工作有一段时间了。在Tkinter中,可以这样做: w = tk.Tk() w.update() 用Kivy怎么做 任何帮助都将不胜感激 在GUI中,您不应该使用sleep(),这是
for i in range(100, 400):
Window.size = (300, i)
sleep(.01)
现在它只休眠3秒钟,然后调整大小
类似于Tkinter中的操作方式:
我和特金特一起工作有一段时间了。在Tkinter中,可以这样做:
w = tk.Tk()
w.update()
用Kivy怎么做
任何帮助都将不胜感激 在GUI中,您不应该使用
sleep()
,这是一项阻止事件循环的任务,每个GUI都提供了以友好的方式生成相同效果的工具,在tkinterafter()
的情况下(因此避免将sleep()
与update()
一起使用是一种不好的做法),在kivy的情况下,您可以使用:
或者更好的是,使用,除了具有更可读的代码之外,此实现的优点是kivy处理必须以不不必要地消耗资源的方式进行更新的情况:
import kivy
from kivy.app import App
from kivy.core.window import Window
from kivy.animation import Animation
from kivy.uix.button import Button
from kivy.config import Config
Config.set('graphics', 'width', '300')
Config.set('graphics', 'height', '100')
Config.write()
Window.size = (300, 100)
class ButtonAnimation(Button):
def __init__(self, **kwargs):
Button.__init__(self, **kwargs)
self.bind(on_press=self.start_animation)
def start_animation(self, *args):
anim = Animation(size=(300, 400), step=0.01)
anim.start(Window)
class MyApp(App):
def build(self):
root = ButtonAnimation(text='Press me')
return root
if __name__ == '__main__':
MyApp().run()
import kivy
from kivy.app import App
from kivy.core.window import Window
from kivy.animation import Animation
from kivy.uix.button import Button
from kivy.config import Config
Config.set('graphics', 'width', '300')
Config.set('graphics', 'height', '100')
Config.write()
Window.size = (300, 100)
class ButtonAnimation(Button):
def __init__(self, **kwargs):
Button.__init__(self, **kwargs)
self.bind(on_press=self.start_animation)
def start_animation(self, *args):
anim = Animation(size=(300, 400), step=0.01)
anim.start(Window)
class MyApp(App):
def build(self):
root = ButtonAnimation(text='Press me')
return root
if __name__ == '__main__':
MyApp().run()