2012-12-19 10 views
4

我開始學習wxPython來創建GUI應用程序,並且我遇到了一些問題:使用wx.DirDialog選擇某個文件夾時,無論選擇哪個文件夾,dlg.GetPath ()總是返回相同的文件夾,這是我的情況:/家庭/ loaiwxPython Dirdialog總是返回相同的目錄

我的綁定功能如下所示,它是直截了當:

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

謝謝

回答

3

我有我自己的代碼,並與上面貼的代碼有同樣的問題。但是,我發現有一種解決方法。當您使用DirDialog時,請勿實際導航到您要打開的目錄。相反,只需突出顯示要打開的目錄並單擊打開即可。

在Ubuntu 12.10上,使用Python 2.7.3和wxPython 2.8.12.1(和2.9),一直導航到一個目錄並單擊打開的按鈕只是爲您提供主目錄。向上瀏覽一個目錄,突出顯示所需的目錄,然後單擊打開的按鈕可獲得正確的結果。

我有另一臺運行ubuntu 11.10與Python 2.7.3的機器,我不記得有這個問題。

很明顯,這個解決方法並不是一個合適的解決方案,但這是我迄今爲止所能想到的。我希望它有幫助。

+0

我正在運行linux mint,並且因爲它是在Ubuntu上面構建的,所以它有同樣的問題:)謝謝 –

+0

我剛剛確認一臺機器DirDialog會給出預期的結果,無論您進入目錄並單擊打開或只是選擇該目錄並點擊打開。該機器運行Ubuntu 11.10,Python 2.7.2和wxPython 2.8.11.0。我不知道這個差別是在wxPython 2.8.11.0和2.8.12.1之間還是在Ubuntu 11.10和12.10之間 – jkibele

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種不同的路徑。

+0

其實是的,我從您的教程學習,這個代碼是形成它,我的規格是:Linux Mint的14 ,python 2.7.3,wxpython 2.8.12.1 –

+0

我的可運行代碼工作嗎? –

+0

好吧,它在Windows 7中運行,它是OKAY!我不知道爲什麼它不適用於Linux mint。 –

0

大多數操作系統中的dir對話框使用起來笨拙。您必須在底部觀看那個小文本框,並確保在單擊「確定」之前它已正確填充。我有很多用戶遇到問題。所以,也許你正在瀏覽你想要的文件夾,但是你並沒有將點擊組合放到文本框中。這可能不是你的問題,但我想我會提到它。否則,你的代碼對我來說看起來很好。

好運,

邁克

+0

奇怪的是,在這裏,沒有「小文本框」,它只是一個選擇對話框 –

+0

我有一臺Windows機器,所以如果您使用的是unix型機器,我的外觀可能與您的不同。 – MikeHunter

0

試試這個:

對話框= 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

相關問題