【问题标题】:Popup Defocussing without a popup showing - Kivy - Python弹出散焦没有弹出显示 - Kivy - Python
【发布时间】:2021-10-30 20:28:50
【问题描述】:

在 Kivy 中构建应用程序的过程中,当标签文本对于弹出窗口的大小而言太大时,我偶然发现了弹出窗口的这种行为。

我决定我更喜欢以这种方式显示的错误消息的外观,我想知道是否有办法让这种情况发生,但不会在错误消息下方显示弹出框?

我尝试将 size_hint vales 设置为零,但这让我有了这个

有没有办法在不显示弹出框的情况下实现主窗口的这种散焦?

谢谢!

编辑

我现在已经包含了一个最小的工作示例,对于之前没有这样做表示歉意。

提醒一下,我正在寻找一种方法让错误消息显示为整个应用程序窗口的叠加层,但不显示弹出窗口。

谢谢!

main.py

from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.popup import Popup


class Example(App):

    def build(self):
        return ExampleWindow()


class ExampleWindow(Button):

    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        self.popup = MessageBox()


class MessageBox(Popup):
    pass


if __name__ == '__main__':
    Example().run()

Example.kv

<ExampleWindow>:
    text: "Open Message"
    on_release: root.popup.open()

<MessageBox>:
    size_hint: 0.3, 0.3
    Label:
        font_size: 36
        text: "MESSAGE TEXT IS HERE!"

【问题讨论】:

  • 显示一些可运行的代码
  • 您好,我在上面提供了一些示例代码,很抱歉最初没有这样做!

标签: python kivy popup kivy-language


【解决方案1】:

您无法自定义Popup 小部件,但您可以使用Popup 的prenet 小部件创建您自己的自定义小部件,即ModalView,如下所示


from kivy.app import App
from kivy.lang import Builder
from kivy.uix.label import Label
from kivy.uix.modalview import ModalView

kv = Builder.load_string('''
Screen:
    Button:
        text:'press to see text'
        on_press:app.add_floating_label()


''')


class MyApp(App):
    view = None

    def build(self):
        return kv

    def open_floating_label(self):
        self.view = ModalView(auto_dismiss=True, size_hint=(None, None), background_color=[.1, .1, .1, 0],
                              size=(300, 75))
        self.view.add_widget(Label(text="MESSAGE TEXT IS HERE!"))
        self.view.open()
    # you can also close the view using dismiss method
    def close_floating_label(self):
        self.view.close()


MyApp().run()


【讨论】:

  • 完美,这正是我所追求的!
猜你喜欢
  • 2020-10-12
  • 1970-01-01
  • 1970-01-01
  • 2017-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多