Kivy - 保存对象的值在弹出窗口中发生了变化,因此关闭它后,当我再次打开弹出窗口时,它会以新值打开



我想在弹出窗口中更改类的一些按钮标签,并在重新打开弹出窗口后保留新标签。如果你运行我的应用程序,你可以看到在按下"Press me"按钮后,会出现一个弹出窗口,其中有一个标签为"Default"的按钮,按下后,它会将标签更改为"New"。我想能够关闭弹出窗口,按下"按我"按钮,然后在弹出窗口中看到标签为"新"的按钮。

我的.py文件

from kivy.uix.floatlayout import FloatLayout
from kivy.core.window import Window
from kivy.uix.popup import Popup
from kivy.app import App
from kivy.uix.widget import Widget
import time
Window.clearcolor = (1, 1, 1, 1)
Window.size = (800, 480)
class MyGrid(Widget):
def btn(self):
show_popup(T, "Window")

class T(FloatLayout):
pass
def show_popup(tab, name): 
show = tab()
popupWindow = Popup(title = name, content = show, size_hint = (None,None), size = (800,384), auto_dismiss = True)
popupWindow.open()
return popupWindow
class TimeApp(App):
def build(self):
return MyGrid()

if __name__ == "__main__":
TimeApp().run()

我的.kv文件

<MyGrid>    
Button:
text: "Press me"
on_press: root.btn()

<T>:
Button:
pos_hint: {"center_x": 0.5, "center_y": 0.5}
text: "Default"
on_press: self.text = "New"

实现这一点的一种方法是保留对弹出窗口的引用
py侧:

Window.clearcolor = (1, 1, 1, 1)
Window.size = (800, 480)

class MyGrid(Widget):
def __init__(self, **kwargs):
super(MyGrid, self).__init__(**kwargs)
self.popupWindow = Popup(content=T(), size_hint=(None, None),
size=(800, 384), auto_dismiss=True)
def btn(self):
self.show_popup("Window")
def show_popup(self, name):
self.popupWindow.title = name
self.popupWindow.open()

class T(FloatLayout):
pass

class TimeApp(App):
def build(self):
return MyGrid()

if __name__ == "__main__":
TimeApp().run()

最新更新