Python GUI 设计的一个简单例子

简介: Python GUI 设计的一个简单例子

这段代码是一个比较复杂的 Python 脚本,主要涉及图像处理、图形用户界面 (GUI) 创建、和一些操作系统级的功能。下面,我将逐行解释这段代码的作用和逻辑。

导入模块

import matplotlib.image
import cv2
import tkinter as tk
from tkinter import *
import win32api, win32con
import time
import tkinter.messagebox
import sys
import threading

这些行导入了本脚本所需的所有 Python 库。matplotlib.image 用于读取图像文件,cv2(即 OpenCV)用于执行图像处理任务,tkinter 用于创建 GUI 界面。win32apiwin32con 用于访问 Windows API,用以获取屏幕参数和其他系统级操作。timesysthreading 分别用于时间处理、系统相关操作和多线程编程。

全局变量初始化

ni = ""
x = win32api.GetSystemMetrics(win32con.SM_CXSCREEN)  # 获得屏幕分辨率 X 轴
y = win32api.GetSystemMetrics(win32con.SM_CYSCREEN)  # 获得屏幕分辨率 Y 轴
root = ""
flag_jiuji = False
flag_exit = False

这部分代码初始化了一些全局变量。ni 可能用于存储用户输入,xy 存储屏幕的宽度和高度。root 变量可能用于存储 Tkinter 的窗口对象。flag_jiujiflag_exit 是控制流的标志变量。


函数定义

函数 pan
def pan():
    global flag_exit
    if ni.get() == "exit":
        flag_exit = True
        return
    if ni.get() == "p":
        root.destroy()
        return
    else:
        tkinter.messagebox.showwarning("警告", "哼, 别想动我电脑")

pan 函数检查用户输入的内容。如果输入为 exit,则设置 flag_exitTrue,可能表示退出程序。如果输入为 p,则销毁 Tkinter 窗口。否则,显示一个警告消息框。


函数 chengfa
def chengfa():
    global root, ni
    root = tk.Tk()
    root.minsize(x, y)
    label1 = Label(root, text='''由于你看着不像主人,所以触发此程序。
    在此填写密码:\t\t\t''')
    label1.place(x=x / 2 - 100, y=y / 2)
    ni = tk.Entry(root, width=20, show="*")
    ni.place(x=x / 2 + 10, y=y / 2 + 20)
    ga = tk.Button(root, text='确定密码', command=pan)
    ga.place(x=x / 2 - 90, y=y / 2 + 40)
    root.overrideredirect(True)
    root.update()
    while True:
        if flag_exit:
            sys.exit(0)
        try:
            root.wm_attributes('-topmost', 1)
            root.update()
        except:
            break

chengfa 函数创建一个全屏的 Tkinter 窗口,要求用户输入密码。如果 flag_exit 被设置为 True,则程序退出。窗口始终保持在最前面。

图像处理和监控循环

cap = cv2.VideoCapture(0, cv2.CAP_DSHOW)

这行代码初始化一个视频捕捉对象,0 表示默认摄像头。cv2.CAP_DSHOW 是指定 DirectShow 框架。

while True:
    ret, frame = cap.read()
    cv2.imwrite(str(index) + ".bmp", frame)
    img = cv2.imread("niu.bmp")
    cropped = img[0:490, 144:480]  # 裁剪坐标为 [y0:y1, x0:x1]
    cv2.imwrite

("niu.bmp", cropped)
    I = image_matrix("niu.bmp")
    I = I[0]
    K = [[1, 0, 1], [0, 1, 0], [1, 0, 1]]
    d_i = len(I)
    d_j = len(I[0])
    I_K = []
    q = []
    p = 1
    for i in range(d_i - 2):
        for j in range(d_j - 2):
            re = get_sum(I, K, i, j)
            q.append(re)
            if p % 4 == 0:
                p = 0
                I_K.append(q)
                q = []
            p += 1

这部分代码不断从摄像头捕捉图像,保存并读取图像,对图像进行裁剪和处理。处理包括应用一个简单的内核 K 进行图像滤波。这部分代码的细节涉及到图像处理的基本概念,如卷积和滤波。

    pooling = []
    for i in range(0, len(I_K), 2):
        q = []
        for j in range(0, len(I_K[0]), 2):
            try:
                sub_ls = [I_K[i][j], I_K[i + 1][j], I_K[i][j + 1], I_K[i + 1][j + 1]]
                q.append(max(sub_ls))
            except:
                break
        pooling.append(q)

这段代码执行所谓的 pooling 操作,它是神经网络中常见的一种降维操作,通过取局部最大值来降低数据的维度和复杂度。

    niu = dig_lists(pooling)
    cnt = 0
    for i in range(min(len(bi), len(niu))):
        if round(bi[i], -2) != round(niu[i], -2):
            cnt += 1

接下来的代码对处理后的数据 niu 进行分析,计算其与某个标准数据 bi 的差异,并根据这些差异做出反应,如达到一定条件则触发 chengfa 函数,显示密码输入界面。


总结

这个脚本是一个综合性很强的例子,涵盖了图像处理、GUI 设计和简单的安全功能。主要用于在不同情况下对计算机的访问进行控制,通过图像捕捉和处理来监测环境变化,并在特定条件下锁定设备并要求密码输入。

相关文章
|
24天前
|
开发框架 开发者 Python
探索Python GUI编程:从Tkinter到PyQt的全方位使用
在当今技术发展日新月异的时代,Python作为一种简洁高效的编程语言,拥有广泛的应用领域。其中,GUI(图形用户界面)编程是Python开发者经常涉足的领域之一。本文将介绍两个常用的Python GUI库——Tkinter和PyQt,并深入探讨其使用方法、特点以及适用场景,帮助读者全面了解Python GUI编程的魅力。
|
24天前
|
数据采集 自然语言处理 Python
Python 制作微博抓取 GUI 程序
vPython 制作微博抓取 GUI 程序
|
24天前
|
存储 Python
Python实战项目(十三)使用 Tkinter GUI 库构建闹钟应用程序
Python实战项目(十三)使用 Tkinter GUI 库构建闹钟应用程序
45 0
|
24天前
|
数据可视化 Linux C++
Python GUI编程:Tkinter与PyQt的选择
Python作为一门流行的编程语言,在GUI编程领域也有着非常强大的工具。其中,Tkinter和PyQt是两个备受推崇的GUI库。本文将介绍这两个库的优缺点,并帮助读者决定应该选择哪一个。
|
9天前
|
Python 容器
Python GUI编程(Tkinter)
Python GUI编程(Tkinter)
24 1
|
15天前
|
Python 容器
Python与GUI编程:创建图形用户界面
Python的Tkinter库是用于构建GUI应用的内置工具,无需额外安装。它提供了丰富的控件,如按钮、文本框等,让用户通过图形界面与程序交互。创建GUI窗口的基本步骤包括:导入Tkinter库,创建窗口对象,设置窗口属性,添加控件(如标签和按钮),并使用布局管理器(如`pack()`或`grid()`)来组织控件的位置。此外,可以通过绑定事件处理函数来响应用户操作,例如点击按钮。Tkinter还有更多高级功能,适合开发复杂GUI应用。
|
24天前
|
开发框架 程序员 开发者
Python GUI编程:从入门到精通3.2 GUI编程:学习使用Tkinter、PyQt或wxPython等库创建图形用户界面。
Python GUI编程:从入门到精通3.2 GUI编程:学习使用Tkinter、PyQt或wxPython等库创建图形用户界面。
|
24天前
|
存储 SQL 数据库
【python】python鲜花管理系统(界面GUI版本)(源码+数据库)【独一无二】
【python】python鲜花管理系统(界面GUI版本)(源码+数据库)【独一无二】
|
24天前
|
Python
python使用tkinter库,封装操作excel为GUI程序
python使用tkinter库,封装操作excel为GUI程序
267 0
|
24天前
|
存储 前端开发 JavaScript
强烈推荐一个Python库!制作Web Gui也太简单了!
强烈推荐一个Python库!制作Web Gui也太简单了!