【发布时间】:2018-08-25 08:17:04
【问题描述】:
我正在尝试在 python 上移植一个项目 2to3,并卡在 tkinter 中。
在python2中,在tkinter中给Frame添加菜单栏是没有问题的,
但是python3出现属性错误。 (框架对象没有属性'tk_menuBar')
python2和python3在tkinter中给Frame添加菜单栏有什么区别吗?
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")
PS。这是我的第一个问题,所以如果您指出我关于不礼貌的错误,我将不胜感激。
【问题讨论】:
-
运行你的代码我得到一个语法错误。修复它后,我得到另一个语法错误,然后是另一个语法错误,然后是
NameError: name 'Map' is not defined... 实际上不能重现您的问题的代码没有帮助。 -
您的主要错误是发布无效代码。虽然在这种特定情况下我们可能会看到问题,但通常您需要提供我们可以复制和粘贴然后运行的代码。您有缩进错误、缺少类定义、缺少导入和几个语法错误。
-
感谢您指出我的错误。在这种情况下,我只想知道无法找到的 2.x 和 3.x 之间的 tk_menubar 语法,所以我不在乎代码是否有效。下次在其他问题上,我会记住的。
标签: python python-3.x tkinter