定义按钮id
您有正确的方法在Python脚本中分配idto按钮。在btn1 = Button(text="Close",id="test")
注意
Python脚本中声明的id与在kv文件中定义的ids不同。
错误
您遇到的错误不是因为按钮的id设置不正确。关键字self引用“当前控件实例”,即Alert/Popup,它不是属性test。在
^{pr2}$
解决方案
当按钮被定义时,它被分配给一个对象btn1。因此,如果要更改按钮的背景颜色,请使用btn1.background_colour
示例
在主.py在from kivy.uix.screenmanager import Screen
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.popup import Popup
from kivy.uix.label import Label
from kivy.uix.button import Button
from kivy.core.window import Window
from kivy.uix.boxlayout import BoxLayout
from kivy.properties import ObjectProperty
Window.size = (500, 150)
class Alert(Popup):
def __init__(self, title, text):
super(Alert, self).__init__()
box = BoxLayout(orientation='vertical', padding=(5))
box.add_widget(Label(text=text))
btn1 = Button(text="Close", id="test")
box.add_widget(btn1)
self.title = title
self.title_size = 30
self.title_align = 'center'
self.content = box
self.size_hint = (None, None)
self.size = (300, 200)
self.auto_dismiss = False
self.open()
btn1.background_color = [0, 0, 1, 0.5]
class Test(App):
def build(self):
Alert(title='yeah!', text='inputs are invalid')
return
if __name__ == '__main__':
Test().run()
输出
{a1}