行が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 をクリックしたときにデータを保存する方法です。つまり、データを保存する方法は知っていますが、ユーザーがフレームを閉じたときにそれが必要です。フレームを開くときにグリッドを拡張するにはどうすればよいですか? 開いているときは、グリッドが拡大するようにフレームのサイズを変更する必要があります