我有一個kivy程序,它具有包含高爾夫比賽細節的'sqlite'數據庫,其中顯示信息&通過標準彈出功能彈出的警告消息pop_mess() 爲了測試目的,在函數set_test_db()中打開另一個「測試」數據庫。完成此操作後,我想更改彈出窗口的背景顏色,以警告用戶主數據庫未被使用。在python中更改kivy彈出窗口小部件背景
我試過這樣做(代碼在'set_test_db'結尾)。然而,雖然例程正確地檢索當前背景顏色,但它不會改變它。
有人能指出我的方向的解決方案。編碼方法對於更改小部件的文本屬性正常工作。 (類似的問題通常涉及文本屬性)。我已經使用了兩個列表&元組的顏色值。
在.ky文件
<CustomPopup>:
popup_message: popup_message
size_hint: .98, .75
id: popup_id
title: "Casual and Ancient"
title_align: 'center'
title_color: 1,.5,.3,1
BoxLayout:
id: contentbox
orientation: 'vertical'
TextInput:
id: popup_message
color: .3,.4,1.0,1
background_color: [.7,1.0,.2,1]
text: "text message goes here"
font_size: 16
font_name: 'RobotoMono-Regular'
…..
CaaRoot:
<CaaRoot>:
orientation: 'lr-tb'
padding: 10
etc
...
在main.py
(個體= CaaRoot) ...
def pop_mess(self,message):
p_up=CustomPopup()
lab=p_up.ids['popup_message']
lab.text=message
p_up.open()
...
def set_test_db(self):
# on button in CaaRoot
# open test data base instead of real
if self.db != None:
print 'Cannot Open Test Data Base - already running'
else:
# open ‘test’ database
# set background colour of popup to warn user.
fn='/home/.... caatestdb.db
self.op_db(fn)
self.testing='TEST database'
p_up=CustomPopup()
lab=p_up.ids['popup_message']
x=lab.background_color
new_col=[.9,.3,.3,1]
lab.background_color=new_col
self.pop_mess('color set to : '+str(new_col)+ ' was : '+str(x))
個
的彈出式窗口,
color set to : [0.9, 0.3, 0.3, 1] was : [0.7, 1.0, 0.2, 1]
(背景仍然設定爲[0.7,1.0,0.2,1])
感謝您的鏈接。我克隆了'md'並嘗試運行'kitchen sink'演示,但因'ImportError:No module named recycleview '和'Unable to import package'kivymd.menu.MDDropdownMenu'失敗,我想我已經沒有了我的深度與kivy的某些方面,雖然它做我所需要的。 – Iain1940
RecycleView在Kivy圖書館中非常新穎,您可能需要從Kivy-Garden下載版本。看看還有其他一些不錯的小工具。另一種可能性是克隆1.9.2-dev。看看[link](https://kivy.org/docs/api-kivy.uix.recycleview.html)recycleview是在1.10版本中添加的 – Fari