我正在开发一个总线驱动程序应用程序。偶尔会在MQTT主题上发布消息,应用程序订阅该主题(由服务器)。当出现此类消息时,必须出现弹出窗口。我自定义了默认的Kivy弹出窗口:更改了背景,添加了带有Lable和Button的FloatLayout作为内容。
问题在于,在几种情况下(5-6),弹出窗口的纹理元素会跳开,如背景,标签文本或按钮的图像。
以下是我的Popup类的Kivy定义:
<BktsPopup@Popup>:
title: 'Alert message'
title_align: 'center'
title_size: 25
size_hint: (0.6, 0.6)
# size: (400, 300)
auto_dismiss: False
separator_height: 0
message: popup_msg
border: (14, 14, 14, 14)
FloatLayout:
BktsLabel:
id: popup_msg
font_size: 20
size_hint_y: 0.7
pos_hint: {'center_x': 0.5, 'y': 0.5}
# size_hint_y: 60
BktsButton:
id: ok_btn
background_normal: 'res/btn_released_gray.png'
background_down: 'res/btn_pressed_gray.png'
size_hint_x: 0.4
size_hint_y: 0.3
pos_hint: {'center_x': 0.5, 'y': 0.1}
text: 'OK'
font_size: 25
on_press: root.dismiss()
这是python类:
class BktsPopup(Popup):
popup_back_color = ListProperty([])
message = ObjectProperty()
def __init__(self, text, title, level):
Popup.__init__(self)
self.title = title
self.message.text = text
if level is LEVEL_NORMAL:
self.background = 'res/popup_back_green.png'
elif level is LEVEL_URGENT:
self.background = 'res/popup_back_red.png'
以下是弹出窗口的打开方式:
def on_dispatcher_message(self, level, text):
popup = BktsPopup(text, 'Dispatcher', level)
popup.bind(on_dismiss=self.send_message_ack)
popup.open()
self.store_event(text)
有时,整个背景会跳跃并出现在左下角。 有什么想法吗?