我有一个框架,其中包含一个网格,它的行填充了来自我的 api 的数据,因此用户编辑来自网格的数据,我希望在用户关闭单击 X 以关闭框架时保存它,所以我正在这样做
title = "Datos"
def __init__(self,title,parent=None):
wx.Frame.__init__(self, parent=parent, title=title)
user=self.get_ser()
self.Show()
panel=wx.Panel(self, -1)
myGrid = gridlib.Grid(panel)
user_data = json.loads(self.decrypt(self.get_data(user)))
print(user_data)
myGrid.CreateGrid(len(user_data), 3)
myGrid.SetColLabelValue(0, "WEB")
myGrid.SetColLabelValue(1, "USERNAME")
myGrid.SetColLabelValue(2, "PASSWORD")
for i in range(0,len(user_data)):
myGrid.SetCellValue(i, 0, user_data[i]["web"])
myGrid.SetCellValue(i, 1, user_data[i]["username"])
myGrid.SetCellValue(i, 2, user_data[i]["password"])
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(myGrid, 1, wx.EXPAND)
panel.SetSizer(sizer)
self.SetBackgroundColour(wx.Colour(100,100,100))
self.Centre()
self.Show()
self.Bind(wx.EVT_CLOSE, self.OnClose(myGrid,user_data))
def OnClose(self, myGrid,user_data):
dlg = wx.MessageDialog(self,
"Do you really want to close this application?",
"Confirm Exit", wx.OK|wx.CANCEL|wx.ICON_QUESTION)
result = dlg.ShowModal()
dlg.Destroy()
if result == wx.ID_OK:
self.savedata(myGrid,user_data)
self.Destroy()
def savedata(self, myGrid,user_data):
for i in range(0,(len(user_data))):
print(myGrid.GetCellValue(i,0)+" "+myGrid.GetCellValue(i,1)+" "+myGrid.GetCellValue(i,2))
我的问题是打开框架时会出现弹出对话框,并且我将 myGrid 传递给可以在用户关闭框架时读取每一行的内容,因此我可以保存当前正在控制台上打印数据的数据测试一下
现在我的问题是当用户单击 X 时如何保存数据我的意思是我知道如何保存数据但是当用户关闭框架时我想要它另一个问题如何在打开框架时使网格展开?当它打开时,我必须调整框架的大小以便网格展开