Exception in Tkinter callback Traceback (most recent call last): File "C:\Users\Lenovo\AppData\Local\Programs\Python\Python36\lib\tkinter\__init__.py", line 1705, in __call__ return self.func(*args) File "F:/pytest1/yangsongtao80Login.py", line 35, in mClick MainMenu() File "F:\pytest1\main_menu.py", line 17, in __init__ self.createPage() File "F:\pytest1\main_menu.py", line 49, in createPage countMenu.add_command(label="商品统计", command=self.show_count_goods) AttributeError: 'MainMenu' object has no attribute 'show_count_goods'
时间: 2023-08-31 10:11:35 浏览: 55
这个错误是由于您在`MainMenu`类中没有定义`show_count_goods`方法导致的。请确保在`MainMenu`类中定义了该方法。您可以检查一下`main_menu.py`文件的第49行,确认是否正确定义了`show_count_goods`方法。如果没有定义,请添加该方法并重新运行程序。
相关问题
报错:Exception in Tkinter callback Traceback (most recent call last): File "C:\Users\311353\AppData\Local\Programs\Python\Python37\lib\tkinter\__init__.py", line 1705, in __call__ return self.func(*args) File "F:/工具/软件自启动.py", line 18, in start_program stderr=subprocess.PIPE) File "C:\Users\311353\AppData\Local\Programs\Python\Python37\lib\subprocess.py", line 800, in __init__ restore_signals, start_new_session) File "C:\Users\311353\AppData\Local\Programs\Python\Python37\lib\subprocess.py", line 1207, in _execute_child startupinfo) FileNotFoundError: [WinError 2] 系统找不到指定的文件。
这个错误通常是由于无法找到指定的文件导致的。根据报错信息,看起来是在启动程序时出现了问题。
请确保以下几点:
1. 确认程序路径是正确的,程序路径应该是正确安装 ConfigTool 的路径。你可以手动尝试打开该路径,确保能够找到 ConfigTool.exe 文件。
2. 确认 ConfigTool.exe 文件存在于指定的程序路径中。如果不存在,请检查路径是否正确,并确保已正确安装 ConfigTool。
3. 确保你的 Python 程序具有足够的权限来执行该文件。尝试使用管理员权限运行 Python 程序,或者将 Python 程序所在的文件夹添加到系统的 PATH 环境变量中。
如果问题仍然存在,请提供更多的上下文信息,例如完整的代码和程序路径,以便更好地理解问题并提供帮助。
报错如何解决,Exception in Tkinter callback Traceback (most recent call last): File "C:\Users\86135\AppData\Local\Programs\Python\Python39\lib\tkinter\__init__.py", line 1892, in __call__ return self.func(*args) File "F:\pycharm\实验5\Demo5_2.py", line 38, in count_cells _, contours, _ = cv2.findContours(self.thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) ValueError: not enough values to unpack (expected 3, got 2)
这个错误是因为cv2库在新的版本中,`cv2.findContours()`函数返回值的格式发生了改变。在旧版本中,返回值是3个,包括轮廓、层次结构和近似轮廓点。而在新版本中,返回值是2个,只包括轮廓和层次结构。
要解决这个错误,可以将代码中的3个变量都替换为2个变量,或者使用新版本cv2库的返回值。以下是两种方法的代码示例:
方法一:将3个变量都替换为2个变量
```python
import cv2
import numpy as np
import tkinter as tk
from tkinter import filedialog
class CellCounter:
def __init__(self):
self.root = tk.Tk()
self.root.title("Cell Counter")
self.root.geometry("400x300")
self.img = None
self.thresh = None
self.count = 0
self.img_label = tk.Label(self.root, text="No image selected")
self.img_label.pack(pady=10)
self.btn_select = tk.Button(self.root, text="Select Image", command=self.select_image)
self.btn_select.pack(pady=10)
self.btn_count = tk.Button(self.root, text="Count Cells", command=self.count_cells)
self.btn_count.pack(pady=10)
self.count_label = tk.Label(self.root, text="Cell Count: 0")
self.count_label.pack(pady=10)
def select_image(self):
path = filedialog.askopenfilename(filetypes=[("Image Files", "*.jpg;*.jpeg;*.png;*.bmp")])
if path:
self.img = cv2.imread(path)
self.img_label.config(text="Image: {}".format(path))
self.thresh = None
self.count = 0
self.count_label.config(text="Cell Count: 0")
def count_cells(self):
if self.img is None:
return
if self.thresh is None:
gray = cv2.cvtColor(self.img, cv2.COLOR_BGR2GRAY)
_, self.thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV+cv2.THRESH_OTSU)
contours, _ = cv2.findContours(self.thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
self.count = len(contours)
self.count_label.config(text="Cell Count: {}".format(self.count))
def run(self):
self.root.mainloop()
if __name__ == "__main__":
app = CellCounter()
app.run()
```
方法二:使用新版本cv2库的返回值
```python
import cv2
import numpy as np
import tkinter as tk
from tkinter import filedialog
class CellCounter:
def __init__(self):
self.root = tk.Tk()
self.root.title("Cell Counter")
self.root.geometry("400x300")
self.img = None
self.thresh = None
self.count = 0
self.img_label = tk.Label(self.root, text="No image selected")
self.img_label.pack(pady=10)
self.btn_select = tk.Button(self.root, text="Select Image", command=self.select_image)
self.btn_select.pack(pady=10)
self.btn_count = tk.Button(self.root, text="Count Cells", command=self.count_cells)
self.btn_count.pack(pady=10)
self.count_label = tk.Label(self.root, text="Cell Count: 0")
self.count_label.pack(pady=10)
def select_image(self):
path = filedialog.askopenfilename(filetypes=[("Image Files", "*.jpg;*.jpeg;*.png;*.bmp")])
if path:
self.img = cv2.imread(path)
self.img_label.config(text="Image: {}".format(path))
self.thresh = None
self.count = 0
self.count_label.config(text="Cell Count: 0")
def count_cells(self):
if self.img is None:
return
if self.thresh is None:
gray = cv2.cvtColor(self.img, cv2.COLOR_BGR2GRAY)
_, self.thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV+cv2.THRESH_OTSU)
_, contours = cv2.findContours(self.thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
self.count = len(contours)
self.count_label.config(text="Cell Count: {}".format(self.count))
def run(self):
self.root.mainloop()
if __name__ == "__main__":
app = CellCounter()
app.run()
```
希望这些方法可以帮助你解决报错问题!