Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Kivy中的更新窗口_Python_Window_Kivy - Fatal编程技术网

Python 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(),这是

我想知道是否有可能在Kivy中更新窗口

我为什么需要这样做:

我想制作一个调整窗口大小的动画

for i in range(100, 400):
    Window.size = (300, i)
    sleep(.01)
现在它只休眠3秒钟,然后调整大小

类似于Tkinter中的操作方式:

我和特金特一起工作有一段时间了。在Tkinter中,可以这样做:

w = tk.Tk()
w.update()
用Kivy怎么做


任何帮助都将不胜感激

在GUI中,您不应该使用
sleep()
,这是一项阻止事件循环的任务,每个GUI都提供了以友好的方式生成相同效果的工具,在tkinter
after()
的情况下(因此避免将
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()