

wxPython で「次へ」「戻る」でフォーム(ウインドウ)を変えていくプログラムを作っています。  
移動元のフォームで指定した値を移動先で参照したいです。どのようにやればいいでしょうか。

やりたいことは以下のような感じです。

**移動元フォーム**

[code]

    def button_modify_click(self, event):
        dlg = frmModify.frmModify()
        global room_num
        room_num = u"104"
        dlg.Show()
        self.Close(True)
        return True
    
[/code]

**移動先フォーム**

[code]

    class frmModify(wx.Frame):
        def __init__(self):
            global room_num
            (中略)
            self.text_room_no = wx.TextCtrl(pRoom, wx.ID_ANY, room_num, size = (640, 64))
    
[/code]

どうぞよろしくご教示のほどお願いします。


CC BY-SA 3.0
2015-12-02T02:26:19.433
19537
2022-04-06T01:00:45.053
2015-12-02T03:07:54.300
7837
9674
question
python
wxPython でフォーム(ウインドウ)間の値の受け渡し


プロパティを移動先フォームに追加して、移動元でセットしてからShowするのはいかがでしょう？  
Window間で値の更新を反映したいならBindする手もあります。

下記は関数で値を渡すサンプルコードです。

[code]

    import wx
    
    class frmModify(wx.Frame):
        def __init__(self):
            wx.Frame.__init__(self, None, wx.ID_ANY, "遷移先")
            self.SetSize((680, 80))
            pRoom = wx.Panel(self)
            
            self.text_room_no = wx.TextCtrl(pRoom, wx.ID_ANY, size = (640, 64))
    
        # 値を渡す関数
        def ImportRoomNum(self, room_num):
            self.text_room_no.SetValue(room_num + "に送られました。")
    
    class MyFrame(wx.Frame):
        def __init__(self, parent, id, title):
            wx.Frame.__init__(self, parent, id, title)
            self.SetSize((60, 120))
            panel = wx.Panel(self)
            
            self.room_name = "5号室"
            
            self.text_room = wx.TextCtrl(panel, wx.ID_ANY, self.room_name, pos=(10,40), size = (100,25))
            self.button_modify = wx.Button(panel, label="modify", pos=(10,10), size=(100,25))
            self.Bind(wx.EVT_BUTTON, self.button_modify_click, self.button_modify)
            
            self.Show(True)
    
        def button_modify_click(self, event):
            dlg = frmModify()
            dlg.ImportRoomNum(self.text_room.GetValue()) # フォーム(ウインドウ)間の値の受け渡し
            dlg.Show()
        
        def close(self,event):
            self.Close(True)
    
        def printer(self, event):
            print("Button2")
            
    app = wx.App()
    frame = MyFrame(None, wx.ID_ANY, "遷移元")
    app.MainLoop()
    
[/code]

* * *

この投稿は @MaFengLing
さんの[コメント](https://ja.stackoverflow.com/questions/19537/wxpython-%e3%81%a7%e3%83%95%e3%82%a9%e3%83%bc%e3%83%a0%e3%82%a6%e3%82%a4%e3%83%b3%e3%83%89%e3%82%a6%e9%96%93%e3%81%ae%e5%80%a4%e3%81%ae%e5%8f%97%e3%81%91%e6%b8%a1%e3%81%97#comment18167_19537)などを元に編集し、[コミュニティWiki](https://ja.meta.stackoverflow.com/q/1583)として投稿しました。


CC BY-SA 4.0
2021-01-13T10:33:01.560
73269
2021-01-13T10:33:01.560
9820
19537
answer