PyObjC 和 TKinter 的集成问题

发布于 2024-11-29 13:27:22 字数 354 浏览 2 评论 0原文

以下简单代码:

from PyObjCTools import AppHelper
import AppKit
import Tkinter

class App(AppKit.NSApplication):

    def finishLaunching(self):
        self.root=Tkinter.Tk()

_=App.sharedApplication()
AppHelper.runEventLoop()

产生以下异常:Python[23717:d07] -[App _setup:]:无法识别的选择器发送到实例0x105d05340

我做错了什么?

The following simple code:

from PyObjCTools import AppHelper
import AppKit
import Tkinter

class App(AppKit.NSApplication):

    def finishLaunching(self):
        self.root=Tkinter.Tk()

_=App.sharedApplication()
AppHelper.runEventLoop()

yields the following exception: Python[23717:d07] -[App _setup:]: unrecognized selector sent to instance 0x105d05340

What am I doing wrong?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

错々过的事 2024-12-06 13:27:22

我认为 Tkinter 和 Cocoa 工具包不能如此互换地混合使用。 self.root 是类App 上的一个属性,它继承自AppKit.NSApplication。我的猜测是,Tk() 调用返回一个指针,然后将该指针传递给 Cocoa 框架,但指向它无法理解的 Tk 数据结构。此外,Tkinter 和 PyObjC 都需要自己的事件循环;我不确定你是否可以将两者混合使用(尽管我从未尝试过)。

我的建议是使用一个 UI 工具包或另一个,但不能同时使用两者。

I don't think you can mix Tkinter and Cocoa toolkits so interchangeably. self.root is an attribute on the class App, which inherits from AppKit.NSApplication. My guess is that the Tk() call returns a pointer that is then passed to the Cocoa frameworks, but points to a Tk data structure that it can't understand. Also, both Tkinter and PyObjC need their own eventloop; I'm not sure if you can even mix the two (though I've never tried).

My recommendation would be to use one UI toolkit or the other, but not both.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文