今天是我第一次使用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()
您不能(通常)从与GUI用户无关的进程连接到windows服务器。看这个Apple tech note。 基本上,在Apache产生的进程中使用
NSWindow
等是一个很大的禁忌。如果没有GUI用户登录,窗口服务器甚至不能保证存在。所以,你不能可靠地做你想做的事。在问题是OSX附带的WebKit依赖于windows服务器。一种解决办法可能是安装Qt,它有一个独立于核心图形窗口服务器的WebKit后端。在
相关问题 更多 >
编程相关推荐