1. <i id='IcOhr'><tr id='IcOhr'><dt id='IcOhr'><q id='IcOhr'><span id='IcOhr'><b id='IcOhr'><form id='IcOhr'><ins id='IcOhr'></ins><ul id='IcOhr'></ul><sub id='IcOhr'></sub></form><legend id='IcOhr'></legend><bdo id='IcOhr'><pre id='IcOhr'><center id='IcOhr'></center></pre></bdo></b><th id='IcOhr'></th></span></q></dt></tr></i><div id='IcOhr'><tfoot id='IcOhr'></tfoot><dl id='IcOhr'><fieldset id='IcOhr'></fieldset></dl></div>

      <tfoot id='IcOhr'></tfoot>

      <small id='IcOhr'></small><noframes id='IcOhr'>

        <bdo id='IcOhr'></bdo><ul id='IcOhr'></ul>
    1. <legend id='IcOhr'><style id='IcOhr'><dir id='IcOhr'><q id='IcOhr'></q></dir></style></legend>
    2. 如何使用 Kivy 制作工具提示?

      时间:2023-10-11

            <tbody id='7lVXe'></tbody>

          <small id='7lVXe'></small><noframes id='7lVXe'>

          <tfoot id='7lVXe'></tfoot>
          <legend id='7lVXe'><style id='7lVXe'><dir id='7lVXe'><q id='7lVXe'></q></dir></style></legend>
          • <bdo id='7lVXe'></bdo><ul id='7lVXe'></ul>

            • <i id='7lVXe'><tr id='7lVXe'><dt id='7lVXe'><q id='7lVXe'><span id='7lVXe'><b id='7lVXe'><form id='7lVXe'><ins id='7lVXe'></ins><ul id='7lVXe'></ul><sub id='7lVXe'></sub></form><legend id='7lVXe'></legend><bdo id='7lVXe'><pre id='7lVXe'><center id='7lVXe'></center></pre></bdo></b><th id='7lVXe'></th></span></q></dt></tr></i><div id='7lVXe'><tfoot id='7lVXe'></tfoot><dl id='7lVXe'><fieldset id='7lVXe'></fieldset></dl></div>
              • 本文介绍了如何使用 Kivy 制作工具提示?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

                问题描述

                当鼠标指针悬停在 ActionBar 中的图标上时,我希望在 Qt 中看到工具提示.
                是的,我可以使用 mode='spinner',但图标更好.

                I want to see tooltip as in Qt when the mouse pointer is hovering over icon in ActionBar.
                Yes, I can use mode='spinner', but icons are nicer.

                推荐答案

                一个可以改进和扩展的简单示例:

                A simple example you can improve and extend:

                from kivy.app import App
                from kivy.lang import Builder
                from kivy.uix.widget import Widget
                from kivy.core.window import Window
                from kivy.uix.actionbar import ActionButton
                from kivy.uix.label import Label
                from kivy.clock import Clock
                
                Builder.load_string("""
                <Tooltip>:
                    size_hint: None, None
                    size: self.texture_size[0]+5, self.texture_size[1]+5
                    canvas.before:
                        Color:
                            rgb: 0.2, 0.2, 0.2
                        Rectangle:
                            size: self.size
                            pos: self.pos
                
                <MyWidget>
                    ActionBar:
                        ActionView:
                            MyActionButton:
                                icon: 'atlas://data/images/defaulttheme/audio-volume-high'
                            MyActionButton:
                                icon: 'atlas://data/images/defaulttheme/audio-volume-high'                
                """)
                
                class Tooltip(Label):
                    pass
                
                class MyActionButton(ActionButton):
                    tooltip = Tooltip(text='Hello world')
                
                    def __init__(self, **kwargs):
                        Window.bind(mouse_pos=self.on_mouse_pos)
                        super(ActionButton, self).__init__(**kwargs)
                
                    def on_mouse_pos(self, *args):
                        if not self.get_root_window():
                            return
                        pos = args[1]
                        self.tooltip.pos = pos
                        Clock.unschedule(self.display_tooltip) # cancel scheduled event since I moved the cursor
                        self.close_tooltip() # close if it's opened
                        if self.collide_point(*self.to_widget(*pos)):
                            Clock.schedule_once(self.display_tooltip, 1)
                
                    def close_tooltip(self, *args):
                        Window.remove_widget(self.tooltip)
                
                    def display_tooltip(self, *args):
                        Window.add_widget(self.tooltip)
                
                
                class MyWidget(Widget):
                    pass
                
                class ClientApp(App):
                    def build(self):
                        return MyWidget()
                
                if __name__ == '__main__':
                    ClientApp().run()
                

                首先我将 on_mouse_pos 方法绑定到 Window.mouse_pos 事件,以便我可以检测鼠标光标何时悬停在我的 ActionButton 子类上.这是基于这个片段.然后,如果我不移动光标,我会使用 Clock.schedule_once() 安排一个动作,以使我的工具箱可见.为了显示,我只是将 Label 的子类添加到小部件堆栈中.您可以用更复杂的方法替换 display_tooltip()close_tooltip() 方法.

                First I bind on_mouse_pos method to Window.mouse_pos event so I can detect when the mouse cursor hovers over my subclass of ActionButton. This is based on this snippet. Then I shedule an action with Clock.schedule_once() to make my toolbox visible if I won't move my cursor. To display I'm just adding a subclass of Label to the stack of widgets. You can replace display_tooltip() and close_tooltip() methods with more sophisticated ones.

                将代码相应地更新为 this answer

                这篇关于如何使用 Kivy 制作工具提示?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!

                上一篇:如何在 kivy 应用程序退出时运行方法 下一篇:ScrollView 小部件在 kivy 中不滚动

                相关文章

                最新文章

                <i id='JEKwc'><tr id='JEKwc'><dt id='JEKwc'><q id='JEKwc'><span id='JEKwc'><b id='JEKwc'><form id='JEKwc'><ins id='JEKwc'></ins><ul id='JEKwc'></ul><sub id='JEKwc'></sub></form><legend id='JEKwc'></legend><bdo id='JEKwc'><pre id='JEKwc'><center id='JEKwc'></center></pre></bdo></b><th id='JEKwc'></th></span></q></dt></tr></i><div id='JEKwc'><tfoot id='JEKwc'></tfoot><dl id='JEKwc'><fieldset id='JEKwc'></fieldset></dl></div>

                1. <small id='JEKwc'></small><noframes id='JEKwc'>

                    <tfoot id='JEKwc'></tfoot>

                    <legend id='JEKwc'><style id='JEKwc'><dir id='JEKwc'><q id='JEKwc'></q></dir></style></legend>

                    • <bdo id='JEKwc'></bdo><ul id='JEKwc'></ul>