Kivy:如何在不关闭弹出窗口的情况下更新弹出标签文本

锡拉明

我想打开一个弹出窗口,三秒钟后更改弹出标签的文本。

我尝试以下代码:

from kivy.app import App
from kivy.uix.popup import Popup
from kivy.lang import Builder
from kivy.uix.button import Button
import time

Builder.load_string('''
<SimpleButton>:
    on_press: self.fire_popup()
<SimplePopup>:
    id:pop
    size_hint: .4, .4
    auto_dismiss: True
    title: 'Hello world!!'
    Label:
        id: lbl_id
        text: 'Default Text'
''')


class SimplePopup(Popup):
    pass


class SimpleButton(Button):
    text = "Fire Popup !"

    def fire_popup(self):
        pop = SimplePopup()
        pop.open()

        time.sleep(3)
        pop.ids.lbl_id.text = "Changed Text"


class SampleApp(App):
    def build(self):
        return SimpleButton()


SampleApp().run()

但是打开弹出窗口之前,它会休眠3秒钟,更改标签文本,然后弹出窗口将打开!

有什么问题?

约翰·安德森

您的代码:

time.sleep(3)

正在停止主线程,因此在该代码完成之前,GUI不会发生任何事情。您应该使用以下方式安排文本更改Clock.schedule_once()

from kivy.app import App
from kivy.clock import Clock
from kivy.uix.popup import Popup
from kivy.lang import Builder
from kivy.uix.button import Button

Builder.load_string('''
<SimpleButton>:
    on_press: self.fire_popup()
<SimplePopup>:
    id:pop
    size_hint: .4, .4
    auto_dismiss: True
    title: 'Hello world!!'
    Label:
        id: lbl_id
        text: 'Default Text'
''')


class SimplePopup(Popup):
    pass


class SimpleButton(Button):
    text = "Fire Popup !"

    def fire_popup(self):
        self.pop = SimplePopup()
        self.pop.open()
        Clock.schedule_once(self.change_text, 3)

    def change_text(self, dt):
        self.pop.ids.lbl_id.text = "Changed Text"


class SampleApp(App):
    def build(self):
        return SimpleButton()


SampleApp().run()

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在不关闭窗口的情况下进行网格更新

来自分类Dev

如何在不被阻止的情况下打开弹出窗口?

来自分类Dev

如何在不被阻止的情况下打开弹出窗口?

来自分类Dev

如何在不关闭命令终端窗口的情况下终止“ Ping”?

来自分类Dev

我如何在不关闭konsole窗口的情况下杀死ssh卡住的连接?

来自分类Dev

如何在不关闭命令终端窗口的情况下终止“ Ping”?

来自分类Dev

如何在不关闭终端的情况下退出SimpleHTTPServer?

来自分类Dev

如何在不关闭xterm的情况下捕获SIGINT?

来自分类Dev

如何在不关闭SAS的情况下停止它?

来自分类Dev

如何在不被浏览器阻止的情况下使用JSF打开弹出窗口

来自分类Dev

如何在没有附加组件的情况下禁用Firefox中的弹出窗口?

来自分类Dev

如何在不显示弹出窗口的情况下将Pidgin与指标/消息菜单集成?

来自分类Dev

如何在没有弹出窗口的情况下创建VB脚本文件

来自分类Dev

CSS:如何在不增加弹出窗口大小的情况下扩大内容区域?

来自分类Dev

如何在不关闭标签的情况下杀死标签或在铬中杀死浏览器本身58

来自分类Dev

如何在不关闭主窗口的情况下关闭Tkinter中的单个窗口?

来自分类Dev

在不关闭 Tkinter 窗口的情况下退出 python 程序

来自分类Dev

点击不关闭WPF弹出窗口

来自分类Dev

我想不关闭弹出窗口

来自分类Dev

如何在不关闭窗口的情况下关闭缓冲区?

来自分类Dev

在 Kivy 中关闭弹出窗口

来自分类Dev

在这种情况下是否可以捕获弹出窗口的关闭事件

来自分类Dev

关闭弹出窗口后如何安装更新?

来自分类Dev

Semantic-ui-react:如何在没有点击/悬停的情况下触发弹出窗口?

来自分类Dev

在不关闭 FileStream 的情况下更新 LastWriteTime

来自分类Dev

在弹出窗口中将文本输出到 kivy 标签

来自分类Dev

如何在不关闭浏览器的情况下重置其状态?

来自分类Dev

如何在不关闭调用工作簿的情况下使用VBA SaveAs?

来自分类Dev

如何在不关闭套接字IO操作的情况下中断线程

Related 相关文章

  1. 1

    如何在不关闭窗口的情况下进行网格更新

  2. 2

    如何在不被阻止的情况下打开弹出窗口?

  3. 3

    如何在不被阻止的情况下打开弹出窗口?

  4. 4

    如何在不关闭命令终端窗口的情况下终止“ Ping”?

  5. 5

    我如何在不关闭konsole窗口的情况下杀死ssh卡住的连接?

  6. 6

    如何在不关闭命令终端窗口的情况下终止“ Ping”?

  7. 7

    如何在不关闭终端的情况下退出SimpleHTTPServer?

  8. 8

    如何在不关闭xterm的情况下捕获SIGINT?

  9. 9

    如何在不关闭SAS的情况下停止它?

  10. 10

    如何在不被浏览器阻止的情况下使用JSF打开弹出窗口

  11. 11

    如何在没有附加组件的情况下禁用Firefox中的弹出窗口?

  12. 12

    如何在不显示弹出窗口的情况下将Pidgin与指标/消息菜单集成?

  13. 13

    如何在没有弹出窗口的情况下创建VB脚本文件

  14. 14

    CSS:如何在不增加弹出窗口大小的情况下扩大内容区域?

  15. 15

    如何在不关闭标签的情况下杀死标签或在铬中杀死浏览器本身58

  16. 16

    如何在不关闭主窗口的情况下关闭Tkinter中的单个窗口?

  17. 17

    在不关闭 Tkinter 窗口的情况下退出 python 程序

  18. 18

    点击不关闭WPF弹出窗口

  19. 19

    我想不关闭弹出窗口

  20. 20

    如何在不关闭窗口的情况下关闭缓冲区?

  21. 21

    在 Kivy 中关闭弹出窗口

  22. 22

    在这种情况下是否可以捕获弹出窗口的关闭事件

  23. 23

    关闭弹出窗口后如何安装更新?

  24. 24

    Semantic-ui-react:如何在没有点击/悬停的情况下触发弹出窗口?

  25. 25

    在不关闭 FileStream 的情况下更新 LastWriteTime

  26. 26

    在弹出窗口中将文本输出到 kivy 标签

  27. 27

    如何在不关闭浏览器的情况下重置其状态?

  28. 28

    如何在不关闭调用工作簿的情况下使用VBA SaveAs?

  29. 29

    如何在不关闭套接字IO操作的情况下中断线程

热门标签

归档