PyQT QFileDialog - 获取完整目录,包括磁盘 IP
PyQT QFileDialog - get full directory including IP of disk
我想获取目录的完整路径,例如:
//192.168.1.23/D/test/test/aaaa/
或
//192.168.1.23/D:/test/test/aaaa/
我怎样才能让QFileDialog给我选择的硬盘的IP地址?
目前正在使用
self.project= str(QtGui.QFileDialog.getExistingDirectory(self, "Select Directory", lastDir))
尝试通过 os.path.dirname(self.project)
,但只能下降到 D:\
谢谢!
你想做的事情在 PyQt 中是不可能直接用 QFileDialog
你可以做的是用另一种方法获取你机器的 ip 地址,然后将它与文件路径连接起来,比如这个。 QFileDialog 不是 'Network aware'
import socket
def get_ip_addr():
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(("8.8.8.8", 80))
return s.getsockname()[0]
ip = get_ip_addr()
path = self.project= str(QtGui.QFileDialog.getExistingDirectory(self, "Select Directory", lastDir))
file_path = '//{}/{}'.format(ip, path) # or what ever formatting suits you
如果您对计算机上的其他地址感兴趣,您也可以查看 QNetworkInterface http://pyqt.sourceforge.net/Docs/PyQt4/qnetworkinterface.html#interfaceFromName,但上面的示例只是 returns 用于路由到 8.8.8.8
不确定我在哪里找到它,但这是我最后遵循的选项。我让用户决定使用哪个设备进行定位
from netifaces import interfaces, ifaddresses, AF_INET
p =[]
for ifaceName in interfaces():
addresses = [i['addr'] for i in ifaddresses(ifaceName).setdefault(AF_INET, [{'addr':'No IP addr'}] )]
p.append(ifaceName.join(addresses))
print p[0],p[1]
print p
我想获取目录的完整路径,例如:
//192.168.1.23/D/test/test/aaaa/
或
//192.168.1.23/D:/test/test/aaaa/
我怎样才能让QFileDialog给我选择的硬盘的IP地址?
目前正在使用
self.project= str(QtGui.QFileDialog.getExistingDirectory(self, "Select Directory", lastDir))
尝试通过 os.path.dirname(self.project)
,但只能下降到 D:\
谢谢!
你想做的事情在 PyQt 中是不可能直接用 QFileDialog
你可以做的是用另一种方法获取你机器的 ip 地址,然后将它与文件路径连接起来,比如这个。 QFileDialog 不是 'Network aware'
import socket
def get_ip_addr():
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(("8.8.8.8", 80))
return s.getsockname()[0]
ip = get_ip_addr()
path = self.project= str(QtGui.QFileDialog.getExistingDirectory(self, "Select Directory", lastDir))
file_path = '//{}/{}'.format(ip, path) # or what ever formatting suits you
如果您对计算机上的其他地址感兴趣,您也可以查看 QNetworkInterface http://pyqt.sourceforge.net/Docs/PyQt4/qnetworkinterface.html#interfaceFromName,但上面的示例只是 returns 用于路由到 8.8.8.8
不确定我在哪里找到它,但这是我最后遵循的选项。我让用户决定使用哪个设备进行定位
from netifaces import interfaces, ifaddresses, AF_INET
p =[]
for ifaceName in interfaces():
addresses = [i['addr'] for i in ifaddresses(ifaceName).setdefault(AF_INET, [{'addr':'No IP addr'}] )]
p.append(ifaceName.join(addresses))
print p[0],p[1]
print p