为什么我的tkinter窗口不显示我的面板?

2024-06-26 14:35:13 发布

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

我有以下代码:

import tkinter
import cv2
from PIL import Image, ImageTk
import threading


class HudGui:
    def __init__(self, window):
        # defining everything for video capture and the tkinter window
    self.CapDev= cv2.VideoCapture(0)
    self.cams = []
    self.counter = 0
    self.frame = None
    self.panel = None
    self.wind = window

    btn = tkinter.Button(window, text="Snapshot!")
    btn.pack(side="bottom", fill="both", expand="yes", padx=10, pady=10)

    # defining threading for video stream
    self.stopEvent = threading.Event()
    self.thread = threading.Thread(target=self.videoLoop(), args=(1,))
    self.thread.start()

def videoLoop(self):
    while not self.stopEvent.is_set():

        # reading and modifying the frame to have the proper data type
        self.frame = self.CapDev.read()[1]
        image = cv2.cvtColor(self.frame, cv2.COLOR_BGR2RGB)
        image = Image.fromarray(image)
        image = ImageTk.PhotoImage(image)

        if self.panel is None:
            self.panel = tkinter.Label(image=image)
            self.panel.image = image
            self.panel.pack(side="left")   # side="left", padx=10, pady=10

            # otherwise, update the panel
        else:
            self.panel.configure(image=image)
            self.panel.image = image


hud = tkinter.Tk()
hud.title("HUD")

HudGui(hud)

hud.mainloop()

当我运行这个代码时,什么也没发生。我没有得到窗口,但我知道它正在更新面板(我已经测试了打印消息)。访问相机之类的东西会有权限问题吗

项目信息:

Python=3.7.3版

opencv contrib python=3.4.4.19


Tags: the代码imageimportselfnonetkinterwindow