【发布时间】:2021-02-27 07:58:39
【问题描述】:
我正在开发幻灯片应用程序。
基本上这会每隔5秒显示某个目录中的所有图片,如果点击图片会发生变化。
在我将它与tkinter 混合之前,它一直运行良好。
看来我的setMouseCallback 方法不再起作用了...
有什么帮助吗?
import os
import cv2
import random
import tkinter as tk
root = tk.Tk()
mouseClickChecker=1
def func():
def clickevent(event,x,y,flags,param):
if event == cv2.EVENT_LBUTTONDOWN:
global mouseClickChecker
mouseClickChecker=2
path = "./"
file_list = os.listdir(path)
file_list_jpg = [file for file in file_list if file.endswith('.jpg')]
file_list_JPG = [file for file in file_list if file.endswith('.JPG')]
file_list_jpeg = [file for file in file_list if file.endswith('.jpeg')]
file_list_PNG= [file for file in file_list if file.endswith('.PNG')]
file_list_png=[file for file in file_list if file.endswith('.png')]
list_in_list = [file_list_jpg, file_list_PNG, file_list_JPG, file_list_jpeg,file_list_png]
final_list = sum(list_in_list,[])
logoPlayChecker=1
while(True):
random.shuffle(final_list)
final_list[0]='logo.jpg'
real_final_list=[]
for v in final_list:
if v not in real_final_list:
real_final_list.append(v)
print(real_final_list)
for i in real_final_list:
mouseClickChecker=1
img = cv2.imread(i)
winname = "slidshow"
cv2.namedWindow(winname, cv2.WND_PROP_FULLSCREEN) ##WINDOW_NORMAL
cv2.setWindowProperty(winname, cv2.WND_PROP_FULLSCREEN,cv2.WINDOW_FULLSCREEN)
cv2.imshow(winname, img)
if logoPlayChecker == 1:
cv2.waitKey(3500)
logoPlayChecker=2
else:
cv2.waitKey(100)
for i in range(50):
cv2.setMouseCallback(winname, clickevent)
if mouseClickChecker==2:
print(mouseClickChecker)
break
else:
mouseClickChecker=1
print(mouseClickChecker)
cv2.waitKey(100)
logoPlayChecker=1
label = tk.Label(root, text='push button')
label.pack()
button = tk.Button(root, text = 'push!', command = func)
button.pack()
root.mainloop()
【问题讨论】: