【问题标题】:Open a URL with the OS default action from Python使用 Python 中的操作系统默认操作打开 URL
【发布时间】:2012-11-03 23:50:13
【问题描述】:

我正在编辑一个名为 TF2idle 的程序,可以在这里看到: http://facepunch.com/showthread.php?t=1161862

我正在添加一个按钮,用于对使用此人可用来源选择的任何帐户进行碎片整理。

我在 python 文件中发现这是所有魔法发生的地方,也是我需要编辑以添加碎片整理按钮的地方。

http://pastebin.com/9PjzqU5u

第 136 - 142 和 328-337 行是我自己添加的。这些行如下:

startDefragIcon = QtGui.QIcon()
            startDefragIcon.addPixmap(QtGui.QPixmap(returnResourcePath('images/defrag.png')), QtGui.QIcon.Normal, QtGui.QIcon.Off)
            self.startDefragAction = self.mainwindow.htoolBar.addAction(startDefragIcon, 'Defrag Accounts')
            QtCore.QObject.connect(self.startDefragAction, QtCore.SIGNAL('triggered()'), curry(self.startUpAccounts, action='start_Defrag'))

 if action == 'start_Defrag':
                                    command = r'"%s/Steam.exe" -login %s %s' % (sandbox_install, username, password)
                                    if easy_sandbox_mode == 'yes' and self.settings.get_option('Account-' + account, 'sandbox_install') == '':
                                            self.commandthread.addSandbox('TF2Idle' + username)
                                            self.createdSandboxes.append(username)
                                            command = r'"%s/Start.exe" /box:%s %s' % (sandboxielocation, 'TF2Idle' + username, command)
                                    else:
                                            command = r'"%s/Start.exe" /box:%s %s' % (sandboxielocation, sandboxname, command)
                                    #Right here add script to launch steam://defrag/440

程序对帐户进行碎片整理的一种方法是启动“steam://defrag/440”,它会自动执行此操作。例如,我可以在我的 google chrome 地址栏中输入该地址,它会告诉 Steam 对 ID 为 440(即 TF2)的程序进行碎片整理。

问题是,我不知道如何将它添加到脚本中。我正在考虑添加一个 BAT 文件,其中包含“steam://defrag/440”,并添加一行将在第 336 行启动所述 BAT 文件。

我希望这里有人知道我如何做到这一点。

第二个问题是我不知道在我完成编辑后如何将所有这些源文件转换为 .EXE。我知道这对我来说很先进,但是如果我想上大学学习计算机科学,我必须开始学习,而且这真的会帮助许多使用这个工具的用户。

【问题讨论】:

  • 您需要在此处发布相关代码,而不是链接到其他地方。期望人们离开这个站点,阅读你的代码,然后返回这里回答是不合理的,如果没有这里的代码意味着如果外部站点由于某种原因不可用,你的问题是没有意义的。这也意味着未来的读者无法搜索它。请在此处编辑并包含与您遇到的问题相关的部分。谢谢。
  • 构建 exe:described in the code

标签: python windows steam


【解决方案1】:

我怀疑你想要webbrowser module:

import webbrowser
webbrowser.open_new('steam://defrag/440')

【讨论】:

  • 没想到这么简单。我通过 IDLE 运行它,它运行良好!谢谢!
【解决方案2】:

如果您只想向该地址发出请求,python 会提供简单的模块来处理它。

from httplib2 import Http
h = Http
h.request('steam://defrag/440', 'GET')

【讨论】:

  • 在我看来这不太可能奏效,因为您需要为“steam:”协议方案使用平台配置的处理程序。除非 Python 比我想象的更神奇,否则 httplib2 不会知道这个方案。
  • 是的,它没有。我正在寻找另一种解决方案,否则我将删除答案。
  • 我没有运行 Windows;如果您准备对此进行测试,也许您可​​以看到我发布的答案是否有效?
  • 它返回True,尽管在我的默认浏览器中没有打开新窗口。
【解决方案3】:

这本身可能不符合作为答案的条件,但由于您的问题也不是真正的问题 (:-P),因此这里有一些提示:

  • Steam 客户端将自己注册为steam:// 协议的 URL 处理程序。
  • 您应该能够使用webbrowser 模块实现您建议的工作流程。
  • 您可以在 BAT 文件中执行的任何操作,都可以在 Python 脚本中执行。
  • 一般来说,Python 脚本不会被编译(例如编译为 .exe 文件)。也就是说,py2exe 将解释器、代码和依赖项包装到 .exe 文件包中。

编辑:请参阅 Eric 对您关于最后一点的问题的评论。

【讨论】:

    猜你喜欢
    • 2014-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多