badapple

逛b站又看到了badapple。。。。。先做個簡化版的玩一下,哈哈。

from tkinter import *
from tkinter.ttk import Scrollbar
import time
import cv2
import tkinter.font as tkFont

theme_color = {
    'Default': '#000000.#FFFFFF',
    'Greygarious': '#83406A.#D1D4D1',
    'Aquamarine': '#5B8340.#D1E7E0',
    'Bold Beige': '#4B4620.#FFF0E1',
    'Cobalt Blue': '#ffffBB.#3333aa',
    'Olive Green': '#D1E7E0.#5B8340',
    'Night Mode': '#FFFFFF.#000000',
}


cap = cv2.VideoCapture('40689-1-208.mp4')#打開相機


class EditorPlus(Tk):
    def __init__(self):
        super().__init__()
        self._set_window_()
        self._create_menu_bar_()
        self._create_body_()

    # 設置初始窗口的屬性
    def _set_window_(self):
        self.title("EditorPlus")
        self.geometry('600x700')

    # 創建整個菜單欄
    def _create_menu_bar_(self):
        menu_bar = Menu(self)
        # 創建文件的聯級菜單
        file_menu = Menu(menu_bar, tearoff=0)
        file_menu.add_command(label='新建', accelerator='Ctrl+N')
        file_menu.add_command(label='打開', accelerator='Ctrl+O')
        file_menu.add_command(label='保存', accelerator='Ctrl+S')
        file_menu.add_command(label='另存爲', accelerator='Shift+Ctrl+S')
        file_menu.add_separator()
        file_menu.add_command(label='退出', accelerator='Alt+F4')

        # 在菜單欄上添加菜單標籤,並將該標籤與相應的聯級菜單關聯起來
        menu_bar.add_cascade(label='文件', menu=file_menu)

        # 創建編輯的聯級菜單
        edit_menu = Menu(menu_bar, tearoff=0)
        edit_menu.add_command(label='撤銷', accelerator='Ctrl+Z')
        edit_menu.add_command(label='恢復', accelerator='Ctrl+Y')
        edit_menu.add_separator()
        edit_menu.add_command(label='剪切', accelerator='Ctrl+X')
        edit_menu.add_command(label='複製', accelerator='Ctrl+C')
        edit_menu.add_command(label='粘貼', accelerator='Ctrl+V')
        edit_menu.add_separator()
        edit_menu.add_command(label='查找', accelerator='Ctrl+F')
        edit_menu.add_separator()
        edit_menu.add_command(label='全選', accelerator='Ctrl+A')
        menu_bar.add_cascade(label='編輯', menu=edit_menu)

        # 視圖菜單
        view_menu = Menu(menu_bar, tearoff=0)
        show_line_number = IntVar()
        show_line_number.set(1)
        view_menu.add_checkbutton(label='顯示行號', variable=show_line_number)

        highlight_line = IntVar()
        view_menu.add_checkbutton(label='高亮當前行', onvalue=1, offvalue=0, variable=highlight_line)

        # 在主題菜單中再添加一個子菜單列表
        themes_menu = Menu(menu_bar, tearoff=0)
        view_menu.add_cascade(label='主題', menu=themes_menu)

        theme_choice = StringVar()
        theme_choice.set('Default')
        for k in sorted(theme_color):
            themes_menu.add_radiobutton(label=k, variable=theme_choice)

        menu_bar.add_cascade(label='視圖', menu=view_menu)

        about_menu = Menu(menu_bar, tearoff=0)
        about_menu.add_command(label='關於')
        about_menu.add_command(label='幫助')
        menu_bar.add_cascade(label='關於', menu=about_menu)
        self["menu"] = menu_bar

    # 創建程序主體
    def _create_body_(self):

        # 創建文本輸入框
        self.ft = tkFont.Font(family="times", size=3, weight=tkFont.NORMAL)
        content_text = Text(self, wrap='word',font = self.ft)
        content_text.pack(expand='yes', fill='both')

        while(True):
            content_text.delete('1.0','end')
            ret,frame = cap.read()#捕獲一幀圖像
            # #判斷按鍵,如果按鍵爲q,退出循環
            # if cv2.waitKey(1) & 0xFF == ord('q'):
            #     break
            gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
            gray = cv2.resize(gray,(80,60))
            cv2.imshow('frame',gray)
            ret, binary = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
            pic_text = ''
            [rows, cols] = binary.shape 
            for i in range(rows - 1): 
                for j in range(cols-1): 
                    #print(binary[j, i]) 
                    if binary[i, j]>200:
                        pic_text = pic_text + '1'
                    else:
                        pic_text = pic_text + ' '
                pic_text = pic_text+'\n'
            content_text.insert(INSERT,pic_text)
            content_text.update()
            cv2.waitKey(1)
        cap.release()#關閉相機

if "__main__" == __name__:
    app = EditorPlus()
    app.mainloop()

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章