2015-01-08 10 views
0

미안하지만 방금이 문제를 놓친 경우이 문제의 해결책을 찾을 수 없습니다.Windows에서 네트워크 폴더에 액세스하는 것은 python file_dialog()를 사용하여 Scientific linux에서 공유합니다.

파이썬 2.7에서 Qt 디자이너를 사용하여 그래픽 인터페이스를 다루는 작은 프로그램을 작성했습니다. 일부 지점에서 file_dialog()를 호출하여 OS 대화 상자 화면에서 프로그램에 쓸 디렉토리를 찾습니다. 여기에 문제가 발생하는 곳이 있습니다 :

노틸러스에서 사용할 수있는 Windows 공유 드라이브가 있습니다 : 장소> 서버에 연결 ...을 통해 액세스했습니다. 노틸러스를 통해 모든 파일을 볼 수 있으며 파일 등을 만들고 파괴 할 수 있습니다. 이 위치는 파이썬에서 호출 된 file_dialog()에서 볼 수 없습니다. 네트워크로 연결된 공유가있는 명령 줄에서도 찾을 수 없습니다. 이 사소한 일이 아마 것을 어떤 도움이 많이 주시면 감사하겠습니다

def file_dialog(self): 
    dir_path = QtGui.QFileDialog.getExistingDirectory(self) 
    return dir_path 

, 미안 :

file_dialog는 정의 된 기능입니다.

미리 감사드립니다.

+0

무엇이'file_dialog()'입니까? 정적 QFileDialog 함수 (네이티브 파일 대화 상자 사용)를 사용합니까, 아니면 Qt의 내장 파일 대화 상자를 사용합니까? 아니면 다른 것을 사용합니까? – ekhumoro

+0

죄송합니다 - 이제는 매우 유용한 정보임을 깨닫습니다. file_dialog는 다음과 같이 정의됩니다 : def file_dialog (self) : dir_path = QtGui.QFileDialog. return dir_path' –

답변

0

Nautilus는 Ghost VFS (가상 파일 시스템) 계층을 사용하므로 Windows (Samba) 공유 및 FTP 또는 HTTP/Webdav와 같은 기타 네트워크 리소스와 MTP과 같은 비 전형적인 "파일 시스템 리소스"에 액세스 할 수 있습니다. 이 기능은 특정 유형의 리소스에 대해 각각 수 많은 플러그인으로 구현됩니다.

순수 Qt 자체에는 해당 휴대용 하위 시스템이 없지만 this answer을 참조하십시오. 당신은 KDE 특정 라이브러리 PyKDE를 사용할 수 있다면, 그들은 또한 this docs

업데이트를 참조 대해 gnomevfs 및 Windows 기본 파일 대화 상자에 유사한 기능을 제공합니다 (KIO이라고 함) 해당 서브 시스템을 가지고 : Windows 및에서라도 가지고있는 "표준"파일 대화 상자를, 그리고 앞서 언급 한 방법으로 설명 된대로 사용할 수 있습니다. 리눅스 (더 정확하게, X 윈도우 시스템, 일반적인 PC-Linux 설치의 그래픽 부분, 예를 들어 우분투)에는 모든 그래픽 툴킷 (Qt, Gtk, Tk, Motif,. ..)는 그래픽 프리미티브, 위젯 및 대화 상자를 자체적으로 구현합니다.

KDE는 "Qt 기반"을 기반으로하므로 순수 Qt에 구현되지 않은 기능은 KDE 관련 라이브러리를 통해 비교적 원활하게 액세스 할 수 있으며 가장 자연스럽고 빠른 해결책 일 수 있습니다. 물론 적절한 플래그를 사용하여 QFileDialog 대신 KFileDialog를 사용해야하지만 나머지는 이벤트 전파 시스템, 위젯 스타일 등이 Linux 전용 코드와 "휴대용 버전"모두에서 공유됩니다.

+0

OSX, Linux 및 Windows에서 실행되는 프로그램이 필요합니다. 특정 라이브러리를 사용하면 이식성이 제한되지 않을 것입니다. 네트워크로 연결된 폴더를 찾기 위해 호출 할 수있는 다른 방법이 있습니까? - 많은 OS에서 액세스 할 수있는 아카이브 드라이브를 만들려고 할 때 네트워크 측면이 가장 중요합니다. –

+0

답변이 업데이트되었습니다. – user3159253

0

도와 주셔서 감사합니다. 수동으로 (터미널에서) 마운트 (mount.cifs 포함)를 리눅스 시스템의 알려진 폴더에 마운트하면 QFileDialog가 아무런 문제없이 작동합니다. 모든. 드라이브가 GUI를 통해 마운트 된 경우에만 문제가됩니다.