我爲Popup創建了一個類,並在kv文件中設置了title屬性。Kivy小部件的新實例沒有kv lang文件的屬性
當彈出窗口顯示時,它沒有kv文件中的標題,而是顯示無標題,就好像它從未設置過一樣。
正是同樣的問題在這裏,但我不從這個鏈接瞭解是什麼問題或如何使其工作: https://github.com/kivy/kivy/issues/751
我知道如何做到這一點使用的ID在千伏郎,但是隻有當Popup作爲根部件的子部件(例如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"
謝謝。通過在「showpopup」函數下添加「pop = popNewDB()」,並直接在類下刪除ObjectProperty定義,我可以使其工作。 但是,據我所知,「流行」將只限於「showpopup」功能,我不能在以後參考 - 是否正確?這就是爲什麼你首先在類中創建了一個ObjectProperty的原因嗎? – brgc
@brgc沒錯。 – zeeMonkeez