我应该混合wxpython和pyobjc吗?

2024-03-29 06:58:04 发布

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

我有一个基于wxPython的应用程序,我正在移植到macosx上,因为我需要显示一些类似于本机Mac警报的警报,所以我使用pyobjc来实现这一点

import Cocoa

import wx

app = wx.PySimpleApp()
frame = wx.Frame(None, title="mac alert test")
app.SetTopWindow(frame)
frame.Show()

def onclick(event):
    Cocoa.CFUserNotificationDisplayAlert(0, 3, 0, 0, 0, "Should i mix wxpython and objc", "hmmm...", 
                                         "Cool", "Not Cool", "Whatever")

frame.Bind(wx.EVT_LEFT_DOWN, onclick)
app.MainLoop()

这种wx和objc代码的混合有什么问题吗,有没有失败点?在


Tags: importapp应用程序macwxpythonpyobjc警报frame
3条回答

您不只是编写一个自定义的WX对话框,它继承自对话?The WX demo has a very nice example of that。多一点工作,但更干净的方法。在

一个可能要问的问题是:我相信你一定是在使用基于碳的wx版本Mac,因为我认为Cocoa版本还没有发布。一旦cocoa版本发布(针对wx),那么我认为应该有“更少”的问题。碳和可可的混合物听起来有问题,但我不能指出具体的问题。在

我不认为这会太好,混合事件循环。。。在

[编辑:我最初是这么想的,因为对话框是模型,而后面的窗口不是模型,可能有两个事件循环在争夺控制权。(因为每个窗口都有自己的窗口,这就是为什么可以在(主要是另一种类型的应用程序)中使用Carbon和cococoa窗口的原因。在

另一方面,前窗口(您的对话框)控制整个事件循环(如果它是模型的话),因此它可以实际工作。]

我真的建议你读一下Carbon/Cocoa Integration guide。现在,这更加困难,因为您使用的是Python而不是C语言,但是它可能解释一些概念。在

我认为在以前的项目中,我们实现了这样的对话,包括可定制的文本。(因为我们使用WxWistGe/C++,我们使用了一个WxWistGeS的API,我们看起来很不错。(... 我们对wx进行了大量修改……)

相关问题 更多 >