我有一个kivy程序,它有一个'sqlite'数据库,其中包含一个显示信息和信息的高尔夫比赛的详细信息。通过标准弹出功能发出警告消息 - pop_mess() 出于测试目的,我在函数set_test_db()中打开一个替代的'testing'数据库。完成后,我想更改弹出窗口的背景颜色,以警告用户主数据库未被使用。
我试过这样做(代码在#set; test_test_db'结束时)。但是,虽然例程正确地检索当前背景颜色,但它不会改变它。
有人能指出我的解决方案。编码方法适用于更改窗口小部件的文本属性。 (类似的问题通常是指文本属性)。我使用过list和amp;用于颜色值的元组。
在.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中
(self = 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))
弹出窗口显示
颜色设置为:[0.9,0.3,0.3,1]为:[0.7,1.0,0.2,1]
(背景仍然设置为[0.7,1.0,0.2,1])
答案 0 :(得分:0)
看看kivymd,它可以很好地解决这类问题。对于基于Google's Material Design的kivy来说,它基本上是一个非常优雅的模板。 对我而言,它使所有着色的东西和外观变得更加容易,特别是因为我不是设计师而是程序员。
演示还有一套非常完整的例子,包括弹出窗口。
答案 1 :(得分:-1)
在进一步调查我的问题时,我遇到了类似的问题(改变Kivy Popup的背景)
给出的解决方案“非直观”涉及“继承的”Canvas元素(?)的属性这一事实使我意识到(记住?),而不是某些小部件没有全部的可修改属性。
我正在检索的'background_color'属性是从Canvas继承的属性,无法轻易更改。
我已经通过在我希望使用它时创建“弹出”小部件而不是修改现有小部件来避免此问题。我仍然不能(简单地)更改弹出窗口的background_color,但我可以更改父元素的背景颜色,以便用户的眼睛立即看到不同的东西。我也可以在调用弹出消息函数时更改文本颜色。
def pop_mess(self,message,colour=(.9,.6,.9,1)):
#
# text color can ve overridden by the 'colour' parameter
# self.backc can be set as required to set the color behind the
# popup depending on circumstances
popup=Popup(title='Casual & Ancient', \
content=Label(text=message,color=colour,\
font_name = 'RobotoMono-Regular'),\
size_hint=(.98,.75),background_color=self.backc)
popup.open()
我不完全确定分析是否正确或可能存在一些副作用,但似乎工作正常(并且编码更简单)