我有一个大小为800x480的MainWindow
gui和Python Tkinter。gui有一个create_image
背景和两个create_window=button
按钮。你知道吗
其中一个按钮启动Opencv4 CamStream
画布,删除MainWindow
画布。用户在视频上的任意位置单击鼠标1后,视频画布将被破坏,视频设备将被释放。你知道吗
我的问题是“回到”原来的画布。原始画布MainWindow
在主程序中定义,并且CamStream
被导入。当我试图在CamStream
方法内调用MainWindow
时,我得到一个错误,说MainWindow
没有定义(因为我在导入的类方法内调用它?)。你知道吗
也许有更好的方法?我认为导入的代码仍然在主程序中运行,因此主程序类对它来说是已知的。你知道吗
简化的主程序:
import tkinter as tk
from PIL import Image, ImageTk
import numpy as np
import cv2
from videocapture import CamStream
root = tk.Tk()
class MainWindow:
def __init__(self, window):
self.window = window
self.canvas = tk.Canvas(window, width=800, height=480)
self.canvas.pack()
camButton = tk.Button(window, text = 'camera', command = lambda: self.canvas.destroy() | CamStream(window))
self.canvas.create_window(300,235, window=camButton, anchor = 'center')
MainWindow(root)
root.mainloop()
简化的导入videocapture
代码:
import tkinter as tk
import cv2
from PIL import Image, ImageTk
class CamStream:
def __init__(self, window):
self.canvas = tk.Canvas(window, width=800, height=480)
self.canvas.pack()
# And other stuff
def close_video(self, event):
if MyVideoCapture().vid.isOpened:
self.vid.vid.release()
self.canvas.destroy()
MainWindow(root) #####Problem creating main canvas ######
目前没有回答
相关问题 更多 >
编程相关推荐