为什么不能使用Python脚本中的Cocoa类?

2024-09-30 08:33:48 发布

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

今天是我第一次使用Python,所以我相信这将是一个简单的问题。在

我需要从命令行应用程序转换这个Python脚本:webkit2png。最终结果将是一个URL,它返回作为querystring参数传递给它的网页的图像。我已经用.NET和IE,Gecko和WebKit在Windows上实现了这一点,但是现在需要在osx上对Safari做同样的操作

我想我已经完成了转换,但不幸的是,在OS X上运行Apache脚本时遇到了一个问题:

app = AppKit.NSApplication.sharedApplication()

# create an app delegate
delegate = AppDelegate.alloc().init()
AppKit.NSApp().setDelegate_(delegate)

# create a window
rect = Foundation.NSMakeRect(0,0,100,100)
win = AppKit.NSWindow.alloc()
win.initWithContentRect_styleMask_backing_defer_ (rect, 
        AppKit.NSBorderlessWindowMask, 2, 0)

错误出现在最后一行“initWithContentRect…”。我看到的错误是:

^{pr2}$

如果我在命令行上运行这个脚本(在删除了CGI之后),它运行得非常完美。在

以下是我要导入的库:

import cgi
import cgitb; cgitb.enable()  # for troubleshooting              
import sys
try:
  import Foundation
  import WebKit
  import AppKit
  import objc
except ImportError:
  print "Cannot find pyobjc library files.  Are you sure it is installed?"
  sys.exit()

Tags: 命令行rectimport脚本app错误createwin
1条回答
网友
1楼 · 发布于 2024-09-30 08:33:48

您不能(通常)从与GUI用户无关的进程连接到windows服务器。看这个Apple tech note。 基本上,在Apache产生的进程中使用NSWindow等是一个很大的禁忌。如果没有GUI用户登录,窗口服务器甚至不能保证存在。所以,你不能可靠地做你想做的事。在

问题是OSX附带的WebKit依赖于windows服务器。一种解决办法可能是安装Qt,它有一个独立于核心图形窗口服务器的WebKit后端。在

相关问题 更多 >

    热门问题