python2和python3在tkinter中向框架添加菜单栏方面有什么不同吗?
我正试图在python上移植一个项目2to3,却被困在tkinter中 在python2中,在tkinter的框架中添加菜单栏没有问题 但是python3发生了属性错误。(框架对象没有属性“tk_menuBar”) python2和python3在tkinter中向框架添加菜单栏方面有什么不同吗python2和python3在tkinter中向框架添加菜单栏方面有什么不同吗?,python,python-3.x,tkinter,Python,Python 3.x,Tkinter,我正试图在python上移植一个项目2to3,却被困在tkinter中 在python2中,在tkinter的框架中添加菜单栏没有问题 但是python3发生了属性错误。(框架对象没有属性“tk_menuBar”) python2和python3在tkinter中向框架添加菜单栏方面有什么不同吗 class TkMap(Map, tkinter.Tk): """ Map with Tkinter GUI functions """ def __init__(self, cols, rows, v
class TkMap(Map, tkinter.Tk):
""" Map with Tkinter GUI functions """
def __init__(self, cols, rows, value,
width, height, widthMM, heightMM,
title, menu = None, keybindings = []):
""" TkMap extends Map and Tkinter """
Map.__init__(self, cols, rows, widthMM, heightMM)
tkinter.Tk.__init__(self)
self.title(title)
if menu == None:
menu = [('File',[['Exit',self.destroy]])]
keybindings.append( ("<Configure>", self.changeSize))
self.menuButtons = {}
self.debug = 0
self.application = 0
self.width = width
self.height = height
self.colScale = self.width / self.cols
self.rowScale = self.height / self.rows
self.addMenu(menu)
def addMenu(self, menu):
""" Create a menu """
self.mBar = tkinter.Frame(self,relief=tkinter.RAISED,borderwidth=2)
self.mBar.pack(fill=tkinter.X)
*for entry in menu:
self.mBar.tk_menuBar(self.makeMenu(self.mBar, entry[0],entry[1]))*
self.mBar.pack(side = "top")
class-TkMap(Map,tkinter.Tk):
“”“使用Tkinter GUI函数映射”“”
定义初始化(self、cols、rows、value、,
宽度,高度,宽度mm,高度mm,
标题,菜单=无,键绑定=[]):
“”“TkMap扩展映射和Tkinter”“”
映射。u_初始(self、cols、rows、widthMM、heightMM)
tkinter.Tk.\uuuuu初始化\uuuuuuuuu(自)
自己的头衔(头衔)
如果菜单==无:
菜单=[('File',['Exit',self.destroy]])]
keybindings.append((“”,self.changeSize))
self.menuButtons={}
self.debug=0
self.application=0
self.width=宽度
自我高度=高度
self.colScale=self.width/self.cols
self.rowScale=self.height/self.rows
self.addMenu(菜单)
def添加菜单(自我,菜单):
“”“创建菜单”“”
self.mBar=tkinter.Frame(self,relief=tkinter.凸起,borderwidth=2)
自我包装(填充=tkinter.X)
*在菜单中输入:
self.mBar.tk_菜单栏(self.makeMenu(self.mBar,条目[0],条目[1]))*
自助mBar.pack(side=“top”)
注:这是我的第一个问题,如果您指出我关于不礼貌的错误,我将不胜感激。您不应该在python 2或3中使用
tk_菜单栏。该函数的docstring表示:
“”“不要使用Tk 3.6及更早版本中需要的。”
注:TK3.6早在90年代初就过时了
无法将菜单附加到框架
小部件。您可以添加Menubutton
的实例来模拟菜单栏,但不会得到真正的菜单栏
通过配置菜单
属性,可以将菜单
附加到根窗口或顶级
的实例
import tkinter as tk
root = tk.Tk()
menubar = tk.Menu()
fileMenu = tk.Menu()
editMenu = tk.Menu()
viewMenu = tk.Menu()
menubar.add_cascade(label="File", menu=fileMenu)
menubar.add_cascade(label="Edit", menu=editMenu)
menubar.add_cascade(label="View", menu=viewMenu)
root.configure(menu=menubar)
root.mainloop()
运行您的代码时,会出现语法错误。修复它后,我得到了另一个语法错误,然后是另一个,然后是NameError:name'Map'未定义
。。。没有真实再现您的问题的代码是没有帮助的。您的主要错误是发布非工作代码。虽然在这种特定情况下,我们可能会看到问题,但一般来说,您需要提供我们可以复制粘贴然后运行的代码。您有缩进错误、缺少类定义、缺少导入和一些语法错误。感谢您指出我的错误。在本例中,我只想知道2.x 3.x之间找不到的tk_菜单栏语法,所以我不关心代码是否真正有效。下次在另一个问题上,我会记住的。啊。。。谢谢你的回答。很不幸,我不能再使用它了。@agigom1993:你没有失去任何功能。它只是一个包装器,使得在一个框架中添加菜单按钮更容易一些。