无法使用OpenCV删除TkInter标签

2024-07-03 07:51:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我想做的是:

你好。我正在创建一个包含摄像头和地图视图的GUI。首先,我想用“F1”和“F2”来控制GUI。你知道吗

问题是:

我的问题是当我按F2键时无法删除/删除标签。按F1没有问题。我试着用packname.pack包()那么packname.forget\u包()但什么也没发生。 另外,当我尝试包装名称.销毁(),帧停止,但屏幕仍在那里。(在GUI上)

我怎样才能解决那个问题?你知道吗

代码:

 import sys

if sys.version_info[0] == 2:
    import Tkinter as tk
else:
    import tkinter as tk

from PIL import ImageTk
import cv2
from PIL import Image


class UI(tk.Tk):

    def __init__(self):
        tk.Tk.__init__(self)
        self.maxsize(width = 500, height = 500)
        self.minsize(width = 500 , height = 500)
        self.cap = cv2.VideoCapture(1)
        self.geometry("500x500")
        self.title('Test1')
        self.camera_view = tk.Frame(self)
        self.camera_on= self.bind("<F1>", self.camera)
        self.bind("<F2>", self.remove_camera)


    def camera(self, event=None):

        _, frame = self.cap.read()
        frame = cv2.flip(frame, 1)
        frame = cv2.resize(frame, (0, 0), fx=0.75, fy=0.65)
        cv2image = cv2.cvtColor(frame, cv2.COLOR_BGR2RGBA)
        img = Image.fromarray(cv2image)
        imgtk = ImageTk.PhotoImage(image=img)
        self.camera_label = tk.Label(image=imgtk)
        self.camera_label.imgtk = imgtk
        self.camera_label.after(10, self.camera)
        self.camera_label.place(x=10, y=100)


    def remove_camera(self, event=None):
        self.camera_label.place_forget()

UI().mainloop()  

Tags: importselfdefsysguicv2framelabel
1条回答
网友
1楼 · 发布于 2024-07-03 07:51:49

解决方案:

我们不能使用绑定流式摄像机功能。我们需要一个控制功能来添加或删除。以下是示例:

import sys

if sys.version_info[0] == 2:
    import Tkinter as tk
else:
    import tkinter as tk

from PIL import ImageTk
from goompy import GooMPy
import cv2
import numpy as np
from PIL import Image
import PIL



class UI(tk.Tk):

    def __init__(self):
        tk.Tk.__init__(self)
        self.maxsize(width = 800, height = 640)
        self.minsize(width = 800 , height = 640)
        self.cap = cv2.VideoCapture(1)
        self.geometry("800x640")
        self.title('Testing1')
        self.arka_plan = tk.Frame(self, bg='#2a2a2a')
        self.arka_plan.pack(fill='both', expand='yes')
        ##self.logo_label.place(x=150, y=0)
        self.camera_label = tk.Label(self)
        self.bind("<F1>", self.control)
        self.bind("<F2>", self.control)
        self.bind("<F3>", self.control)


    def camera(self):

        _, frame = self.cap.read()
        frame = cv2.flip(frame, 1)
        frame = cv2.resize(frame, (0, 0), fx=1.24, fy=1.32)
        cv2image = cv2.cvtColor(frame, cv2.COLOR_BGR2RGBA)
        img = Image.fromarray(cv2image)
        imgtk = ImageTk.PhotoImage(image=img)
        self.camera_label.imgtk = imgtk
        self.camera_label.configure(image=imgtk)
        self.camera_label.after(10, self.camera)


    def control(self, event = None):
        if event.keysym == 'F1': ##kamera calistirilirsa
            self.camera_label.place(x = 0, y = 0)

        elif event.keysym == 'F2': 

            self.camera_label.place_forget()

    def check_quit(self, event):
        pass

app = UI()
app.camera()
app.mainloop()

相关问题 更多 >