Python 为什么这个简单的Tkinter教程脚本在Raspberry Pi上运行良好,但在MacOS上运行不好?

Python 为什么这个简单的Tkinter教程脚本在Raspberry Pi上运行良好,但在MacOS上运行不好?,python,python-3.x,macos,tkinter,Python,Python 3.x,Macos,Tkinter,下面是一个来自web教程的小Python 3脚本,它演示了如何使用Tkinter制作下拉菜单栏 它是直接从复制的,没有任何更改 当我在raspberry pi上运行它时(使用3种不同的IDE),它工作得很好 但是当我在我的Mac上运行它时(在两个不同的IDE中),它只创建了一个白色窗口,没有在其中放置菜单元素 请注意,这个Mac可以运行其他简单的Tkinter脚本,我一直在努力学习Tkinter。。。制作按钮,弹出窗口,没问题 新编辑:当我转到Mac电脑,发现它出现故障时,我会: &

下面是一个来自web教程的小Python 3脚本,它演示了如何使用Tkinter制作下拉菜单栏

它是直接从复制的,没有任何更改

  • 当我在raspberry pi上运行它时(使用3种不同的IDE),它工作得很好
  • 但是当我在我的Mac上运行它时(在两个不同的IDE中),它只创建了一个白色窗口,没有在其中放置菜单元素

  • 请注意,这个Mac可以运行其他简单的Tkinter脚本,我一直在努力学习Tkinter。。。制作按钮,弹出窗口,没问题

新编辑:当我转到Mac电脑,发现它出现故障时,我会:

    >>> import tkinter
    >>> tkinter._test()
…这个测试通过它的小按钮等可以正常工作,我看到一个小窗口告诉我它是v8.5

这个脚本是什么让mac窒息的(而另一台计算机不是)?非常感谢

以下是在Mac上失败的tkinter脚本:

# !/usr/bin/python3
from tkinter import *
def donothing():
   filewin = Toplevel(root)
   button = Button(filewin, text="Do nothing button")
   button.pack()

root = Tk()
menubar = Menu(root)
filemenu = Menu(menubar, tearoff = 0)
filemenu.add_command(label="New", command = donothing)
filemenu.add_command(label = "Open", command = donothing)
filemenu.add_command(label = "Save", command = donothing)
filemenu.add_command(label = "Save as...", command = donothing)
filemenu.add_command(label = "Close", command = donothing)

filemenu.add_separator()

filemenu.add_command(label = "Exit", command = root.quit)
menubar.add_cascade(label = "File", menu = filemenu)
editmenu = Menu(menubar, tearoff=0)
editmenu.add_command(label = "Undo", command = donothing)

editmenu.add_separator()

editmenu.add_command(label = "Cut", command = donothing)
editmenu.add_command(label = "Copy", command = donothing)
editmenu.add_command(label = "Paste", command = donothing)
editmenu.add_command(label = "Delete", command = donothing)
editmenu.add_command(label = "Select All", command = donothing)

menubar.add_cascade(label = "Edit", menu = editmenu)
helpmenu = Menu(menubar, tearoff=0)
helpmenu.add_command(label = "Help Index", command = donothing)
helpmenu.add_command(label = "About...", command = donothing)
menubar.add_cascade(label = "Help", menu = helpmenu)

root.config(menu = menubar)
root.mainloop()
但是当我在我的Mac上运行它时(在两个不同的IDE中),它只创建了一个白色窗口,没有在其中放置菜单元素

太好了,它工作得很好


窗口本身并不是Mac上的菜单所在-就像其他Mac应用程序一样,请查看屏幕顶部。

raspberrypi和macos中有哪些版本的tkinter?Hashbang!如果这是直接从脚本复制的,hashbang标识符是不正确的,将在python的系统安装中运行,MacOS的IIRC是Python2,而不是Python3。Hi@Alan——你知道,我也这么认为,但是当我在mac上完全删除hashbang文件时,该文件仍然不会正常运行,同样“空白的白色窗口,当我关闭它时,它仍然在运行它的主循环,因为它宣布它已经完成了”的问题。(所有其他在mac上运行正常的Tkinter脚本都没有hashbang。)@eyllanesc——我会去尝试学习tkinter的版本。不好意思说我对自己在这两种设置中找到这些版本号的方法没有信心——我现在就去试试。是的,因为hashbang中有一个空格……所以它被忽略了。试着把它改成
!/usr/bin/python3
哈哈哈!!!好的,你赢了!:)Th非常感谢。不是经常有这样的答案就在我面前。谢谢…这让我去了大约10个不同的来源…:)我被各种报道的问题分散了注意力,比如8.5在mac上不兼容…以及mac指南如何排除某些TK菜单功能…实际上,它就在那里。Thanks!:)