AttributeError: 'str' object has no attribute 'get'
时间: 2023-06-21 08:17:27 浏览: 270
这个错误通常发生在尝试在字符串对象上调用`get()`方法时。根据您的代码片段,这可能是因为您尝试在字符串对象`menu_label`上调用`get()`方法。请检查您的代码并确保您正在调用正确的对象上的方法。
如果您正在使用Tkinter创建菜单并使用`Menu`和`MenuItem`对象,请注意,当您使用`add_command()`方法添加菜单项时,它返回的是字符串,而不是`MenuItem`对象。因此,如果您需要在之后访问菜单项,需要在创建时保存它们的引用。以下是一个可能的实现示例:
```
file_menu = Menu(menubar, tearoff=False)
file_menu.add_command(label="PA綫", command=lambda: self.load_excel("D:\點檢系統存放資料夾\點檢明細\點檢内容明細.xlsx", "PA綫"))
file_menu.add_command(label="PB綫", command=lambda: self.load_excel("D:\點檢系統存放資料夾\點檢明細\點檢内容明細.xlsx", "PB綫"))
menubar.add_cascade(label="文件", menu=file_menu)
# 保存菜单项的引用
self.pa_menu_item = file_menu.entrycget(0, 'label')
self.pb_menu_item = file_menu.entrycget(1, 'label')
def load_excel(self, filename, menu_label):
self.la = menu_label
self.workbook = xl.load_workbook(filename)
self.sheet_names = self.workbook.sheetnames
# 获取当前选择的子菜单文本标签名字
if self.la == self.pa_menu_item:
selected_menu = "PA綫"
elif self.la == self.pb_menu_item:
selected_menu = "PB綫"
# 将其显示在工具栏中的标签中
self.toolbar_label.config(text=selected_menu)
```
在这个实现中,我们保存了菜单项的引用,然后在`load_excel()`方法中将`menu_label`与保存的引用进行比较,以获取当前选择的子菜单文本标签名字。这样就避免了在字符串对象上调用`get()`方法的错误。
阅读全文