gpt4 book ai didi

python - 中止陷阱 : when using a Python script with Tkinter and Pyglet

转载 作者:太空宇宙 更新时间:2023-11-04 03:41:55 31 4
gpt4 key购买 nike

我编写了一个 Python 脚本,它使用 Pyglet 作为主窗口,使用 Tkinter 作为初始 GUI 窗口。此脚本在 Windows 上按预期工作,即它显示 Tkinter GUI 窗口和 Pyglet 动画。但是,它不能在 Mac 上正常运行,我无法让两个窗口一起工作,它们是分开工作的。

我发现在执行 master = Tk() 行时会出现错误,如果导入了以下库的话

from pyglet.gl import *
from pyglet.window import Window, mouse, key

我用来测试的完整代码是:

import pyglet
from pyglet.gl import *
from pyglet.window import Window, mouse, key
from Tkinter import * # for the subject data gui

master = Tk()

我从中得到的错误信息如下:

Python[1359:60f] -[NSApplication _setup:]: unrecognized selector sent to instance 0x10300adb0
Python[1359:60f] An uncaught exception was raised
ython[1359:60f] -[NSApplication _setup:]: unrecognized selector sent to instance 0x10300adb0
Python[1359:60f] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSApplication _setup:]: unrecognized selector sent to instance 0x10300adb0'
*** Call stack at first throw:
(
0 CoreFoundation 0x00007fff8685b7b4 __exceptionPreprocess + 180
1 libobjc.A.dylib 0x00007fff84e2c0f3 objc_exception_throw + 45
2 CoreFoundation 0x00007fff868b5110 +[NSObject(NSObject) doesNotRecognizeSelector:] + 0
3 CoreFoundation 0x00007fff8682d91f ___forwarding___ + 751
4 CoreFoundation 0x00007fff86829a68 _CF_forwarding_prep_0 + 232
5 Tk 0x0000000116cc2b24 TkpInit + 545
6 Tk 0x0000000116c389ee Initialize + 1648
7 _tkinter.so 0x0000000116af6c0d Tcl_AppInit + 77
8 _tkinter.so 0x0000000116af5657 Tkinter_Create + 919
9 Python 0x00000001000c2fad PyEval_EvalFrameEx + 21405
10 Python 0x00000001000c4fb3 PyEval_EvalCodeEx + 2115
11 Python 0x000000010003eac0 function_call + 176
12 Python 0x000000010000ceb2 PyObject_Call + 98
13 Python 0x000000010001f56d instancemethod_call + 365
14 Python 0x000000010000ceb2 PyObject_Call + 98
15 Python 0x00000001000bc957 PyEval_CallObjectWithKeywords + 87
16 Python 0x000000010002285e PyInstance_New + 126
17 Python 0x000000010000ceb2 PyObject_Call + 98
18 Python 0x00000001000c0c60 PyEval_EvalFrameEx + 12368
19 Python 0x00000001000c4fb3 PyEval_EvalCodeEx + 2115
20 Python 0x00000001000c50d6 PyEval_EvalCode + 54
21 Python 0x00000001000e995e PyRun_FileExFlags + 174
22 Python 0x00000001000e9bfa PyRun_SimpleFileExFlags + 458
23 Python 0x0000000100100c0d Py_Main + 3101
24 Python 0x0000000100000f14 0x0 + 4294971156
25 ??? 0x0000000000000002 0x0 + 2
)
terminate called after throwing an instance of 'NSException'
Abort trap

我不明白这个错误是什么意思,任何人都可以帮助我理解我做错了什么吗?

最佳答案

我知道这是一个老问题,但我的研究生总是问我这个问题。尤其是当他们从网络上复制代码时。

您几乎肯定会遇到命名空间冲突。您正在执行 import * 或从 pyglet 导入名称,例如 Window, mouse, key,然后从 tkinter 执行 import *。当同时使用 2 个图形库时,最好要么处理完整的命名空间,例如引用 pyglet.window.Window 之类的东西,要么处理别名,例如 import pyglet.window 作为 pw,然后使用 pw.Windowpw.mouse

您发布的代码为我生成了相同的异常,但此版本完成时没有错误:

# import pyglet
# from pyglet.gl import *
# from pyglet.window import Window, mouse, key
import tkinter # import * # for the subject data gui

master = tkinter.Tk()

注意:我使用小写字母 tkinter 因为我使用的是 Python 3.6

关于python - 中止陷阱 : when using a Python script with Tkinter and Pyglet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25997126/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com