标签: pyobjc

对PyObjC应用程序进行采样/配置文件的最佳方法是什么?

使用Activity Monitor/Instruments/Shark进行采样将显示Python解释器中充满C函数的堆栈跟踪.我会帮助您查看相应的Python符号名称.是否有一些可以做到这一点的DTrace魔法?Python的cProfile模块可用于分析Python调用的各个子树,但不是用于了解整个应用程序响应用户事件的情况.

python macos cocoa pyobjc

6
推荐指数
1
解决办法
324
查看次数

纯python gui库?

Python有很多GUI库:tkinter,wxWidgets,pyGTK等.但是所有这些GUI都需要安装并且非常重量级,因此部署最终用户GUI python应用程序会在提到的GUI库上进行中继时有点复杂.

最近,我考虑过python的内置ctypes模块.从理论上讲,可以创建一个纯的python GUI库,用于ctypesWindows(windll.user32.CreateWindowEx等),MacOS上的原生pyObjC和gnome/kde上的pyGTK/pyQt.这样的图书馆存在吗?如果没有,你认为这个想法有什么问题?

python pyobjc pygtk tkinter pyqt

6
推荐指数
5
解决办法
4766
查看次数

XCode 3.2 Ruby和Python模板

在xcode 3.2下,我的ObjectiveC + Python/Ruby项目仍然可以打开更新和编译,但是你无法创建新项目.

鉴于xcode 3.2中缺少ruby和python的所有痕迹(即创建项目并添加新的ruby/python文件),是否有一种简单的方法可以再次安装模板?

我发现了一些关于将它们复制到某个文件夹的信息,但我似乎无法让它工作,我怀疑文件夹的位置已经改变为3.2.

ruby python xcode cocoa pyobjc

6
推荐指数
2
解决办法
1万
查看次数

将10.5(Leopard)的PyObjC应用程序编译为xcode 10.6(Snow Leopard)

我正在尝试在10.5上部署一个在Xcode 3.2.X(Snow Leopard)上开发的PyObjC(或Cocoa-Python)应用程序,它在10.6系统上运行得非常好.

该应用程序不会在10.5上启动;它会在启动时崩溃,并显示此错误消息(在崩溃报告中找到):

Dyld错误消息:未加载库:/System/Library/Frameworks/Python.framework/Versions/2.6/Python引用自:/Users/myuser/Files/myApp.app/Constate/Mark/myApp原因:未找到图像

似乎在某处Xcode硬编码Versions/2.6 python框架路径(而不是将其设置为Versions/Current,例如).

但是,我无法找到可以修改此链接路径的位置以设置为当前(或2.5,可能是有条件的)...

python xcode cocoa pyobjc

6
推荐指数
1
解决办法
389
查看次数

使用pyobjc将元数据写入pdf

我正在尝试使用以下python代码将元数据写入pdf文件:

from Foundation import *
from Quartz import *

url = NSURL.fileURLWithPath_("test.pdf")
pdfdoc = PDFDocument.alloc().initWithURL_(url)
assert pdfdoc, "failed to create document"

print "reading pdf file"

attrs = {}
attrs[PDFDocumentTitleAttribute] = "THIS IS THE TITLE"
attrs[PDFDocumentAuthorAttribute] = "A. Author and B. Author"

PDFDocumentTitleAttribute = "test"

pdfdoc.setDocumentAttributes_(attrs)
pdfdoc.writeToFile_("mynewfile.pdf")   

print "pdf made"
Run Code Online (Sandbox Code Playgroud)

这似乎工作正常(安慰没有错误),但是当我检查文件的元数据时,它如下:

PdfID0:
242b7e252f1d3fdd89b35751b3f72d3
PdfID1:
242b7e252f1d3fdd89b35751b3f72d3
NumberOfPages: 4
Run Code Online (Sandbox Code Playgroud)

原始文件具有以下元数据:

InfoKey: Creator
InfoValue: PScript5.dll Version 5.2.2
InfoKey: Title
InfoValue: Microsoft Word - PROGRESS  ON  THE  GABION  HOUSE Compressed.doc
InfoKey: Producer
InfoValue: GPL Ghostscript …
Run Code Online (Sandbox Code Playgroud)

python pdf cocoa pyobjc pdfkit

6
推荐指数
1
解决办法
1239
查看次数

没有Xcode的PyObjC教程

我正在编写一个小型的跨平台wxPython应用程序,但是在每个平台上我都需要使用一些特定于平台的API.在Mac OS上,可以使用PyObjC完成.

我正在寻找有关如何使用PyObjC的教程.但是,到目前为止我发现的只是Xcode的教程.我希望我的应用程序能够在mac/win/lin上运行,无需更改,我不想在Xcode中开发它.有办法吗?

UPD.更具体地说,我需要从Mac OS X访问一些笔平板电脑事件,我想使用PyObjC(我没有看到任何其他方式).

python macos pyobjc wxpython

6
推荐指数
2
解决办法
3701
查看次数

如何在没有任何打开窗口的情况下更改 wxPython 中的 OSX 菜单栏?

我正在编写一个 wxPython 应用程序,该应用程序在关闭所有窗口后仍保持打开状态 - 因此您仍然可以将新文件拖放到 OSX 停靠栏图标上(我使用myApp.SetExitOnFrameDelete(False))。

不幸的是,如果我关闭所有窗口,OSX 菜单栏将只包含一个“帮助”菜单。我想至少添加一个文件/打开菜单项,或者只保留主窗口的菜单栏。这在 wxPython 中以某种方式可能吗?

事实上,我也会对非 wxPython hack 感到满意(例如,在 pyobjc 中设置菜单,但在 wxPython 中运行其余的 GUI)。无论如何,OSX 中的 wxPython 开发都是一种黑客攻击;)

更新:我设法使用 Lyndsey Ferguson 的提示解决了这个问题。这是我所做的:

  • 在启动时,我创建了一个窗口,并立即显示和隐藏。我将它的位置设置为(-10000,-10000)使其不会在屏幕上闪烁(啊,多么肮脏的黑客!)
  • 我在该窗口中创建了一个空的 EVT_CLOSE 事件处理程序,使其无法关闭。
  • 似乎销毁窗口会重置 OSX 菜单,但隐藏不会......所以当最后一个窗口关闭时,我需要再次显示和隐藏此窗口(隐藏是必要的,以便用户无法使用窗口菜单或 Cmd-`)

是的,这真的很丑……如果有人提出更漂亮的解决方案,我将不胜感激。

更新2:实际上它可以用更简单的方式解决:如果我们不关闭最后一个窗口,只需隐藏它。并确保它不再响应菜单事件。

python macos pyobjc wxpython

5
推荐指数
1
解决办法
1387
查看次数

将 Python 框架捆绑到 Xcode 应用程序中

我正在使用 Xcode 4.6.2 构建一个 PyObjC 应用程序,并试图弄清楚如何将 Python 框架与我的应用程序捆绑在一起,以便我可以引用它,而不依赖于具有特定 Python 版本的主机系统。

(我之前问过这个问题,但从那时起,我决定嵌入框架是更好的方法。)

我知道这是人们所做的事情——根据我的经验,大多数独立的 Python 应用程序都会在其中打包 Python 安装。但我不知道如何让它为我工作。

我已使用构建阶段“复制文件”面板将 Python.framework 复制到我的项目中,并且 Python.framework确实显示在我的应用程序包中,但我不知道如何让应用程序引用它。

如果我在 Xcode 中的“链接的框架和库”中链接到 Python.framework,该应用程序会正确构建,但在 10.6 上启动时失败,并出现错误

Dyld Error Message:
    Library not loaded: /System/Library/Frameworks/Python.framework/Versions/2.7/Python
    Referenced from: {/path/to/my/app}
    Reason: image not found
Run Code Online (Sandbox Code Playgroud)

...因为 10.6 只有 Python 2.5,并且它正在搜索系统框架,而不是我的应用程序包中包含的框架。

如果我链接到 Xcode 中的 Python 框架,应用程序将无法构建。

那么,我如何告诉我的应用程序我希望它使用捆绑在我的应用程序中的 Python.framework appname.app/Contents/Frameworks/Python.framework,而不是位于 的系统 Python.framework /System/Library/Frameworks/Python.framework

我在这个问题上陷入了僵局,任何帮助将不胜感激。

python macos xcode pyobjc xcode4.5

5
推荐指数
1
解决办法
2526
查看次数

使用 Python 检测 OS X 中最前面的应用程序的变化

我创建了一个应用程序,用于pyobjc监视我正在使用的当前应用程序或当前 URL(如果正在使用 Safari/Chrome)。我使用以下方式获得最前面的应用程序:

active_app_name = NSWorkspace.sharedWorkspace().frontmostApplication().localizedName()
Run Code Online (Sandbox Code Playgroud)

它在每秒检索信息的循环中运行。然而,考虑到我可能会丢失信息超过 30 秒,这个解决方案似乎效率很低。

我想知道是否有使用事件的解决方案,即有一个观察者在当前最前面的应用程序发生变化时进行侦听。

我找到了这个答案Mac OS X - How to Monitor a window change event? ,但有两个问题:1.我只需要有关应用程序的信息,而不需要有关特定窗口的信息,2.我不知道如何将这些消息转换为Python代码。

AppleScript 解决方案是合适的,因为我可以使用osascript.

谢谢!

python macos cocoa pyobjc

5
推荐指数
0
解决办法
838
查看次数

如何在 OS X 上使用 Python 连接到 Wi-Fi 网络?

我想在 OS X (10.11) 上使用 Python 连接到 Wi-Fi 网络。基于CWInterface 参考,我发现有一种iface.associateToNetwork_password_error_()方法可用,但是在调用时它不会连接到网络,也不会导致任何异常。

同时iface.disassociate()正常工作并断开WiFi。

这是我试过的代码:

import objc

objc.loadBundle('CoreWLAN',
       bundle_path='/System/Library/Frameworks/CoreWLAN.framework',
       module_globals=globals())

iface = CWInterface.interface()

iface.associateToNetwork_password_error_(SSID, PASSWORD, None)
Run Code Online (Sandbox Code Playgroud)

如何从 OS X 上的 Python 连接到指定网络并确保已建立连接?

python macos pyobjc wifi

5
推荐指数
1
解决办法
3095
查看次数

标签 统计

pyobjc ×10

python ×10

macos ×6

cocoa ×5

xcode ×3

wxpython ×2

pdf ×1

pdfkit ×1

pygtk ×1

pyqt ×1

ruby ×1

tkinter ×1

wifi ×1

xcode4.5 ×1