我为弹出窗口创建了一个类,并在kv文件中设置title属性。你知道吗
当弹出窗口显示时,它没有kv文件中的标题,而是没有显示标题,就好像从未设置过一样。你知道吗
这和这里的问题完全一样,但我不明白这个链接的问题是什么,也不知道如何让它工作: https://github.com/kivy/kivy/issues/751
我知道如何在kvlang中使用IDs来实现这一点,但是只有将弹出窗口作为根窗口小部件(例如MainUI)的子窗口小部件时,它才起作用。然后我可以将python类的实例链接到kv文件中的小部件。 但是弹出窗口显示为根小部件的一部分。 我想做的是,在单击new按钮时实例化popNewDB类的一个新实例,并让这个实例使用KV文件中的“title”等值。你知道吗
你能解释一下怎么做吗?你知道吗
这是我的密码:
py文件:
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.popup import Popup
from kivy.properties import ObjectProperty
class popNewDB(Popup):
pass
class MainUI(Widget):
pop = ObjectProperty(popNewDB())
def showpopup(self):
self.pop.open()
class VerseReminder(App):
def build(self):
return MainUI()
if __name__ == '__main__':
VerseReminder().run()
kv文件:
#:kivy 1.9.1
<popNewDB>
title: 'Hallo'
<MainUI>
Label:
pos: root.center_x - self.width/2,root.center_y + 200
text: "Quote Reminder"
BoxLayout:
size_hint: None,None
width: 400
height: 200
pos: root.center_x-200,root.center_y-50
orientation: 'vertical'
spacing: 20
Button:
size_hint: 1,1
text: "New..."
on_press: root.showpopup()
Button:
size_hint: 1,1
text: "Open..."
Button:
size_hint: 1,1
text: "Quit"
在计算
pop = ObjectProperty(popNewDB())
时,尚未加载规则,因此只会创建一个基本的Popup
。相反,您可以这样做:在这里,第一次按下按钮时,
PopNewDB
的新实例将被创建并存储在self.pop
。 (NB:I重命名了Popup子类,以大写字母开头,以符合语言标准和kivy期望)相关问题 更多 >
编程相关推荐