wxPython Dirdialog总是返回相同的目录

时间:2012-12-19 19:21:24

标签: python wxpython

我开始学习wxPython来创建GUI应用程序,我遇到了一些问题:当使用wx.DirDialog选择一些文件夹时,无论我选择哪个文件夹,dlg.GetPath()总是返回相同的文件夹,在我的情况下:/ home / loai

我的绑定功能如下,它是直截了当的:

def onButton(self,e):
    dlg = wx.DirDialog(self, "Choose a directory:")
    if dlg.ShowModal() == wx.ID_OK:
        print "You chose %s" % dlg.GetPath()
    dlg.Destroy()

这总是打印:你选择了/ home / loai

感谢

4 个答案:

答案 0 :(得分:6)

您使用的操作系统是什么?哪个Python?哪个wxPython?这看起来很像我的tutorials之一的代码,对我来说效果很好。我继续前进,实际上从该教程中编写了一个精简的可运行示例:

import os
import wx


########################################################################
class MyForm(wx.Frame):

    #----------------------------------------------------------------------
    def __init__(self):
        wx.Frame.__init__(self, None, wx.ID_ANY,
                          "File and Folder Dialogs Tutorial")
        panel = wx.Panel(self, wx.ID_ANY)
        self.currentDirectory = os.getcwd()

        dirDlgBtn = wx.Button(panel, label="Show DirDialog")
        dirDlgBtn.Bind(wx.EVT_BUTTON, self.onDir)

    #----------------------------------------------------------------------
    def onDir(self, event):
        """
        Show the DirDialog and print the user's choice to stdout
        """
        dlg = wx.DirDialog(self, "Choose a directory:",
                           style=wx.DD_DEFAULT_STYLE
                           #| wx.DD_DIR_MUST_EXIST
                           #| wx.DD_CHANGE_DIR
                           )
        if dlg.ShowModal() == wx.ID_OK:
            print "You chose %s" % dlg.GetPath()
        dlg.Destroy()

#----------------------------------------------------------------------
# Run the program
if __name__ == "__main__":
    app = wx.App(False)
    frame = MyForm()
    frame.Show()
    app.MainLoop()

我在Windows 7上使用Python 2.6.6和wxPython 2.8.12.1运行此代码。我选择了三个不同的目录,它打印了所有3种不同的路径。

答案 1 :(得分:3)

我的代码和上面发布的代码遇到了同样的问题。但是,我发现有一种解决方法。使用DirDialog时,实际上不要导航到要打开的目录。相反,只需突出显示要打开的目录,然后单击“打开”。

在Ubuntu 12.10上,使用Python 2.7.3和wxPython 2.8.12.1(以及2.9),一直导航到一个目录,然后单击打开按钮,就会显示主目录。向上导航一个目录,突出显示所需目录,然后单击打开按钮可得到正确的结果。

我有另一台机器运行ubuntu 11.10和Python 2.7.3,我不记得有这个问题。

显然,这种解决方案不是一个合适的解决方案,但到目前为止我已经能够提出这一切。我希望它有所帮助。

答案 2 :(得分:0)

大多数操作系统中的dir对话框使用起来很笨拙。你必须在底部观看那个小文本框,并确保在单击OK之前正确填充它。我有很多用户遇到这个问题。因此,您可能正在导航到所需的文件夹,但是您没有进行单击组合以将您的选择放入文本框中。这可能不是你的问题,但我想我会提到它。否则,你的代码看起来很好。

祝你好运,

麦克

答案 3 :(得分:0)

试试这个:

dialog = wx.DirDialog(无,“导航到您需要的版本的桌面目录。”, “〜/”,0,(10,10),wx.Size(400,300)) dialog.CentreOnParent()

    # Update directory with path selected in dialog
    if dialog.ShowModal() == wx.ID_OK:
        self.dir_path = dialog.GetPath()
        self.updateDirectory()

它对我有用:D