PyQT QFileDialog - 获取完整目录包括 dis 的IP

2024-09-30 20:29:03 发布

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

我想获取我的目录的完整路径,比如:

//192.168.1.23/D/test/test/aaaa/

或者

^{pr2}$

如何让QFileDialog提供所选硬盘的IP地址?在

当前正在使用

self.project= str(QtGui.QFileDialog.getExistingDirectory(self,  "Select Directory", lastDir))

尝试通过os.path.dirname(self.project)但那只下到D:\

谢谢!在


Tags: testself路径目录projectselectdirectorystr
2条回答

不知道我在哪里找到的,但这是我在结尾处遵循的选项。我让用户决定使用哪个设备定位

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

在PyQt中不可能直接使用QFileDialog来完成,你可以做的是用另一个方法获取机器的ip地址,然后将其与文件路径连接起来,类似这样。QFileDialog没有“网络感知”

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,但上面的示例只返回用于路由到8.8.8.8的ip地址

相关问题 更多 >