【问题标题】:Reference trouble with wxPython FileDialog if and else statementswxPython FileDialog if 和 else 语句的参考问题
【发布时间】:2012-05-13 21:26:51
【问题描述】:

我在使用 if 和 else 语句时遇到了一些问题,我使用多个 wx.FileDialog 语句来更改文件类型,我允许用户根据选择的单选按钮进行选择。所以问题是我不断收到一个 UnboundLocalError ,我的局部变量分配给在分配之前引用的 FileDialog 语句。这是我的代码:

def OnOpen(self, e):
if self.radioButton1.GetValue():
   opendialog = wx.FileDialog(self, "Choose a file", "", "", "*.txt", wx.MULTIPLE)
if self.radioButton2.GetValue():
   opendialog = wx.FileDialog(self, "Choose a file", "", "", "*.csv", wx.MULTIPLE)
else:
   selectdialog = wx.MessageDialog(self,"Select process", "Warn", wx.OK)
   selectdialog.ShowModal()
   selectdialog.Destroy()
if opendialog.ShowModal() == wx.ID_OK:
   #More code to file path information 

【问题讨论】:

  • 你的意思是“elif self.radioButton2...”吗?
  • @acattle,我不是这个意思,但我应该有。我认为这也可以解决我的问题。谢谢你这么说。

标签: python wxpython


【解决方案1】:

我猜你在没有定义 opendialog 的情况下陷入了第二个“if”语句的“else”条件。您需要确保它在每种情况下都以某种方式初始化,而不仅仅是在三个中的两个中。否则最后一个“if”语句将失败。所以请确保添加

opendialog = wx.FileDialog(self, "Choose a file", "", "", "*.csv", wx.MULTIPLE)

到第二个“if”语句的末尾,它适用于所有情况。

【讨论】:

  • 感谢您的回答。第二个“if”语句已经有了 wx.FileDialog。您的意思是“其他”语句吗?问题是我想在 else 上显示 MessageDialog,而不是 wx.FileDialog。也许您的意思是 opendialog.ShowModal if 语句?那个我需要添加代码来获取文件路径信息。我尝试重复最后一个 if 语句 (opendialog.ShowModal() 但是当我出于某种原因选择 radiobutton1 时 else 语句仍然运行。
  • 第二个“if”语句只实例化第一部分中的 opendialog,而不是第二部分(即 else)。所以如果第一个“if”和第二个“if”的第一部分都没有运行,那么第三个“if”将失败,因为 opendialog 没有定义。
  • 正如@acattle 所说,将 elif 添加到第二个 if 似乎只有在我将 if opendialog.ShowModal() 添加到 if 和 elif 语句时才能解决问题
猜你喜欢
  • 1970-01-01
  • 2021-05-15
  • 1970-01-01
  • 2014-09-26
  • 1970-01-01
  • 1970-01-01
  • 2013-12-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多