wxPython Dirdialog始终返回相同的目录

2024-10-01 13:33:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我开始学习wxPython来创建GUI应用程序,但我遇到了一些问题:当使用wx.DirDialog选择一个文件夹,不管我选择什么文件夹,获取路径()总是返回同一个文件夹,在我的例子中是:/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

谢谢


Tags: 函数self路径文件夹应用程序homedefwxpython
3条回答

你在用什么操作系统?哪条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()

我用python2.6.6和wxpython2.8.12.1在windows7上运行了这段代码。我选择了三个不同的目录,它打印了所有3个不同的路径。在

大多数操作系统中的dir对话框使用起来很笨拙。在单击“确定”之前,您必须查看底部的小文本框并确保它已正确填充。我有很多用户对此有困难。所以,也许你正在导航到你想要的文件夹,但是你没有通过点击组合来将你的选择放入文本框。这可能不是你的问题,但我想我应该提一下。否则,你的代码在我看来很好。在

祝你好运

迈克

我发布了我自己的代码和我自己的代码相同的问题。然而,我发现有一种方法可以绕过它。使用DirDialog时,不要实际导航到要打开的目录。相反,只需突出显示要打开的目录并单击“打开”。在

在Ubuntu12.10上,使用Python2.7.3和WXPython2.8.12.1(以及2.9),导航到一个目录,然后单击“打开”按钮,就可以得到主目录。向上导航一个目录,突出显示所需的目录,然后单击“打开”按钮将得到正确的结果。在

我有另一台运行Ubuntu11.10和Python2.7.3的机器,我不记得有这个问题。在

显然,这种解决方法不是一个合适的解决方案,但这是我目前所能想到的全部。我希望有帮助。在

相关问题 更多 >