不显示弹出窗口的弹出窗口散焦 - Kivy - Python
Popup Defocussing without a popup showing - Kivy - Python
在 Kivy 中构建应用程序的过程中,当标签文本对于弹出窗口的大小而言太大时,我偶然发现了弹出窗口的这种行为。
我决定我更喜欢以这种方式显示错误消息的外观,我想知道是否有办法实现这一点,但没有在错误消息下方显示弹出框?
我尝试将 size_hint 值设置为零,但这让我得到了这个
有没有办法在不显示弹出框的情况下实现主要 window 的散焦?
谢谢!
编辑
我现在已经包含了一个最小的工作示例,很抱歉之前没有这样做。
提醒一下,我正在寻找一种方法让错误消息显示为整个应用程序的覆盖层 window,但不会显示弹出窗口 window。
谢谢!
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!"
您无法自定义 Popup
小部件,但 yiu 可以使用 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()
在 Kivy 中构建应用程序的过程中,当标签文本对于弹出窗口的大小而言太大时,我偶然发现了弹出窗口的这种行为。
我决定我更喜欢以这种方式显示错误消息的外观,我想知道是否有办法实现这一点,但没有在错误消息下方显示弹出框?
我尝试将 size_hint 值设置为零,但这让我得到了这个
有没有办法在不显示弹出框的情况下实现主要 window 的散焦?
谢谢!
编辑
我现在已经包含了一个最小的工作示例,很抱歉之前没有这样做。
提醒一下,我正在寻找一种方法让错误消息显示为整个应用程序的覆盖层 window,但不会显示弹出窗口 window。
谢谢!
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!"
您无法自定义 Popup
小部件,但 yiu 可以使用 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()