0

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

開いたフレーム

4

1 に答える 1