【问题标题】:Return multiple file paths to use in another function using wxPython使用 wxPython 返回多个文件路径以在另一个函数中使用
【发布时间】:2023-04-03 03:12:01
【问题描述】:

我在这里尝试做的是从 wxPython 框架应用程序中选择多个文件,然后在同一个 wxPython 应用程序的另一个函数中使用这些文件路径。我意识到我可以使用以下代码来选择多个文件:

def OnOpen(self,e)
   dialog = wx.FileDialog(self, "Choose a file", "", "", "*.", wx.MULTIPLE)
   if dialog.ShowModal() == wx.ID_OK:
      filelist = dialog.GetPaths()

所以“filelist”变量现在是用户选择的文件列表。但是,我似乎找不到在另一个函数中使用此列表的方法。我希望我可以在另一个函数中使用这个函数中的 return 语句并将其分配给一个变量,但它似乎不允许我这样做。我想这是因为我有一个按钮事件已经在使用这个函数。对此的任何帮助将不胜感激。

【问题讨论】:

    标签: python wxpython


    【解决方案1】:

    我认为我没有完全理解这里的问题。 OnOpen 函数是按钮单击的事件处理程序?所以它在单击按钮时执行。一个窗口应用程序(比如你使用 wxPython 的)通常是事件驱动的,它响应像按钮点击这样的事件。主 GUI 线程循环并分析可由您的应用程序处理的事件。因此,当您编写应用程序时,这些事件处理程序是您想要执行的操作的入口点。

    我认为最好的方法就是简单地使用另一个函数并在参数中传递filelist,例如:

    def OnOpen(self,e)
       dialog = wx.FileDialog(self, "Choose a file", "", "", "*.", wx.MULTIPLE)
       if dialog.ShowModal() == wx.ID_OK:
          filelist = dialog.GetPaths()
          self.otherFunc(filelist)
    
    def otherFunc(self, filelist):
       "do something here"
    

    filelist 保存到属性有时可能会出现问题。正如我所说,您可能有多个想要使用filelist 属性的入口点,您必须预测可能出现的问题。但正如我一开始所说的那样——我可能还没有完全理解你的问题。

    另一种可能性:也许您的问题是您想实际重用OnOpen?第一种可能性是将None 作为参数传递,因为不使用e。另一种更好的可能性是在没有e 参数的情况下定义OnOpen,并将事件绑定更改为self.Bind(wx.EVT_BUTTON, self.OnButtonwx.EVT_BUTTON(<some object>, lambda evt: self.OnOpen())。您在这里明确表示您不需要 evt 参数。

    【讨论】:

    • 感谢您的回复。我尝试了您在 otherFunc 中将“filelist”作为参数传递的建议,但我正在了解它是如何工作的。 “文件列表”不只是 OnOpen 函数中的一个变量吗?没有看到将 filelist 变量作为参数突然显示分配给 OnOpen 函数中的文件路径列表。
    • 对不起,我真的无法理解这个问题。 '将filelist变量作为参数突然显示分配给它的文件路径列表'是什么意思?
    • 对不起,我在这里不清楚。只是说,'filelist' 不是 OnOpen 函数的局部变量吗?如果是这样,我怎么能把它作为 otherFunc 函数的参数?
    • 您只需将其作为参数传递。我更新了示例,抱歉缺少一行
    • 对不起,我无法让它工作,所以我最终使用了一个属性。这是一个小程序,所以应该不是问题
    【解决方案2】:

    将列表作为属性放在 self 中,或者让 self 作为属性包含一个获取路径的侦听器,或者调用另一个函数,将路径作为参数提供给它?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-18
      • 1970-01-01
      • 1970-01-01
      • 2018-12-20
      • 2023-01-19
      相关资源
      最近更新 更多