<p>每次您调用<code>Factory().Popup()</code>时,它都会创建一个全新的<code>Popup</code>,与前一个无关。你能做的是:</p>
<p>以千伏计:</p>
<pre><code>...
<Screen1>:
name: "one"
GridLayout:
id: grid
rows: 2
Button:
id: button1
text: "Go to Screen Two"
on_release: root.manager.current = "two"
Button:
id: button2
text: "Display Popup"
on_release:
p = Factory.PopUp()
p.changeText(root.name)
p.open()
</code></pre>
<p>第二个屏幕也是一样。但是每次你释放这些按钮都会产生一个新的弹出窗口,浪费了太多的内存。你能做的最好的事情就是用一个弹出窗口初始化你的屏幕管理器,然后只改变这个弹出窗口的文本:</p>
<p>Python:</p>
^{pr2}$
<p>以及kv:</p>
<pre><code>...
<PopUp>:
id:pop
size_hint: (.5,.5)
title: "Notice!"
Label:
id: label
text: "You are on Screen one!"
<Screen1>:
name: "one"
GridLayout:
id: grid
rows: 2
Button:
id: button1
text: "Go to Screen Two"
on_release: root.manager.current = "two"
Button:
id: button2
text: "Display Popup"
on_release:
root.manager.popup.open() #Same thing for the second screen
</code></pre>