私信  •  关注

Psionman

Psionman 最近创建的主题
Psionman 最近回复了
4 年前
回复了 Psionman 创建的主题 » 如何打开wxpython文件中的变量

将来最好提供一个代码的最小工作示例。

不要忘记GUI是事件驱动的,必须使用事件将对话框的返回值分配给所需的变量。

您尚未说明要对文件路径执行什么操作,但这段代码显示了如何将其分配给标签。

"""Main Frame module for basic wxPython App."""
import wx


class MainFrame(wx.Frame):
    """Create MainFrame class."""
    def __init__(self, *args, **kwargs):
        super().__init__(None, *args, **kwargs)
        self.size = (400, 1000)
        self.Title = 'wx App'
        self.Bind(wx.EVT_CLOSE, self.on_quit_click)

        self.panel = MainPanel(self)
        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(self.panel)
        self.SetSizer(sizer)
        self.Center()
        self.Show()

    def onclk1(self, event):
        with  wx.FileDialog(self.panel, "OPEN EMG FILE", wildcard="TXT Files(*.txt)|*.txt",
                    style=wx.FD_OPEN | wx.FD_FILE_MUST_EXIST) as EmgFile:
            if EmgFile.ShowModal() == wx.ID_CANCEL:
                return "cancelled"
            emg = EmgFile.GetPath()
            self.panel.lbl_file1.SetLabel(emg)

    def on_quit_click(self, event):
        """Handle close event."""
        del event
        wx.CallAfter(self.Destroy)


class MainPanel(wx.Panel):
    """Create a panel class to contain screen widgets."""
    def __init__(self, parent, *args, **kwargs):
        super().__init__(parent, *args, **kwargs)

        e1 = wx.Button(self, label='File1')
        e1.Bind(wx.EVT_BUTTON, parent.onclk1)

        self.lbl_file1 = wx.StaticText(self, label=' '*100)
        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(e1)
        sizer.Add(self.lbl_file1)
        self.SetSizer(sizer)

if __name__ == '__main__':
        wx_app = wx.App()
        MainFrame()
        wx_app.MainLoop()