• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    用Python给图像算法做个简单应用界面

    以前在Windows上做界面用MFC,现在做算法都是基于Python,所以转用Python的Tkinter库来做。主要是能使用Opencv和Torch处理数据,然后在界面上显示。

    效果如下:

    主要包括3个板块,其余还有一些小功能:

    1、显示固定的图片。或从电脑加载一张图片并显示(涉及到按钮的响应函数编写和弹窗)

    2、下拉框和文本框的使用

    3、进度条的使用(涉及到多线程)

    Tkinter支持控件自动调整布局,但是时间比较赶就不研究了,使用固定位置布局,界面也不给调整。

    控件名称

    代码如下:

    import tkinter as tk
    import tkinter.ttk as ttk
    import tkinter.messagebox
    import tkinter.filedialog
    import cv2 as cv
    from PIL import Image, ImageTk
    import time
    import threading
     
    RELIEF=['flat', 'raised', 'sunken', 'solid', 'ridge', 'groove']
    CURSOR=['arrow','circle','clock','cross','dotbox','exchange',
            'fleur','heart','man','mouse','pirate','plus',
            'shuttle','sizing','spider','spraycan','star','target',
            'tcross','trek','watch']
     
    def PIL2CV(im):
        im = im[:, :, ::-1]
        return ImageTk.PhotoImage(Image.fromarray(im))
     
    def Buttom1_CallBack():
        filename = tk.filedialog.askopenfilename() #弹出文件选择对话框
        if filename=='': #用户没有选择任何文件
            return
        new_img = cv.imread(filename)
        if new_img is None:
            tk.messagebox.showerror('抱歉', '图片加载失败!')
            return
        new_img = cv.resize(new_img, (130, 120))
        new_img = PIL2CV(new_img)
        #后面两句实现图片切换显示
        Label2.configure(image=new_img, width=130, height=120)
        Label2.image = new_img
        tk.messagebox.showinfo('提示','加载图片完成!')
     
    def Buttom2_CallBack():
        info = Combobox1.get()
        param = Entry1.get()
        tk.messagebox.showwarning('警告', '你选择了:'+info+' '+param)
     
    def process_code(delay):
        for i in range(100):
            Progressbar1['value'] = i+1
            root.update()
            time.sleep(delay)
        Buttom3.configure(text='开始处理', state='normal')
        tk.messagebox.showinfo('提示', '处理完成!')
        Progressbar1.configure(value=0)
     
    def Buttom3_CallBack():
        yn = tk.messagebox.askyesno('警告','是否需要开始处理?')
        if not yn:
            return
     
        Buttom3.configure(text='处理中...', state='disabled') #控件失效
        delay = 0.01
     
        # 单独开一个线程,绑定线程函数process_code,参数后面的','很关键
        # 不开线程界面会进入处理函数死循环,用户体验不太好
        t = threading.Thread(target=process_code, args=(delay,))
        t.start()
     
    def Buttom4_CallBack():
        global page_count
        if page_count=0:
            page_count = 0
            return
        else:
            page_count -= 1
            Label4.configure(text='第'+str(page_count)+'页')
        return
     
    def Buttom5_CallBack():
        global page_count
        if page_count>=100:
            page_count = 100
            return
        else:
            page_count += 1
            Label4.configure(text='第' + str(page_count) + '页')
        return
     
    #上面是控件的响应函数
    ################################################################################
    #下面是界面控件的布局
     
    #主界面
    root = tk.Tk()
    root.title('python界面测试') #修改界面标题
    root.iconbitmap('img/tm.ico') #修改界面ico
    root.geometry('800x500') #设定界面尺寸 HxW
    root.resizable(width=False, height=False) #不允许调整窗口大小,不固定删除此行
     
    #添加两个板块边界框
    Frame1 = tk.LabelFrame(root, height=200, width=145)
    Frame1.place(x=15, y=100)
    Frame2 = tk.LabelFrame(root, text="结果显示", height=400, width=620)
    Frame2.place(x=170, y=5)
     
    #添加图片显示框、加载图片框、加载图片按钮
    img = cv.imread('img/title.jpg') #opencv加载图片
    img = cv.resize(img, (140,70)) #图片缩放
    img = PIL2CV(img) #opencv格式转pillow
    Label1 = tk.Label(root, image=img) #初始化默认图片
    Label1.place(x=15, y=20) #图片显示框在界面上的位置
     
    Label2 = tk.Label(root,
                      width=18,height=7, #控件大小(注意单位不是像素)
                      bg="white") #默认白色背景
    Label2.place(x=20,y=110) #图片显示框在界面上的位置
     
    Buttom1 = tk.Button(root,
                        width=15,height=1, #按钮大小
                        text='加载检索图片', #按钮文本
                        relief=RELIEF[3], #按钮的风格
                        command=Buttom1_CallBack) #绑定响应函数
    Buttom1.place(x=25, y=250) #按钮在界面上的位置
     
    #添加参数文本框、下拉框、下拉框内容输出按钮
    Combobox1 = ttk.Combobox(root, width=17, height=1)
    Combobox1['value'] = ('窗前明月光','疑是地上霜','举头望明月','明月照我影')
    Combobox1.current(0)
    Combobox1.place(x=15, y=320)
     
    Label3 = tk.Label(root, text='参数')
    Label3.place(x=15, y=350)
     
    Entry1 = ttk.Entry(root, width=9) #文本框为啥没有H
    Entry1.place(x=50, y=350)
    Entry1.insert(0,'0.5')
     
    Buttom2 = tk.Button(root,
                        width=15,height=1,
                        text='你选择了什么?',
                        relief=RELIEF[3],
                        command=Buttom2_CallBack)
    Buttom2.place(x=25, y=380)
     
    #添加进度条、开始处理按钮
    Progressbar1 = ttk.Progressbar(root, length=600, value=0, cursor=CURSOR[1])
    Progressbar1.place(x=15, y=460)
     
    Buttom3 = tk.Button(root,
                        width=15,height=1,
                        text='开始处理',
                        relief=RELIEF[3],
                        command=Buttom3_CallBack)
    Buttom3.place(x=630, y=455)
     
    #添加两个滚动按钮
    Buttom4 = tk.Button(root,
                        width=3,height=1,
                        text='',
                        relief=RELIEF[1],
                        command=Buttom4_CallBack)
    Buttom4.place(x=380, y=410)
     
    global page_count #全局变量,用来控制页码
    page_count=0
    Label4 = tk.Label(root, text='第0页')
    Label4.place(x=420, y=410)
     
    Buttom5 = tk.Button(root,
                        width=3,height=1,
                        text='>',
                        relief=RELIEF[1],
                        command=Buttom5_CallBack)
    Buttom5.place(x=470, y=410)
     
    root.mainloop()
    #这句话后面不能有代码

    以上就是用Python给图像算法做个简单应用界面的详细内容,更多关于python 应用界面的资料请关注脚本之家其它相关文章!

    您可能感兴趣的文章:
    • Python猜数字算法题详解
    • python算法题 链表反转详解
    • 一道python走迷宫算法题
    • python实现dbscan算法
    • Python机器学习之PCA降维算法详解
    • Python机器学习算法之决策树算法的实现与优缺点
    • python排序算法的简单实现方法
    • Python实现K-means聚类算法并可视化生成动图步骤详解
    • python利用K-Means算法实现对数据的聚类案例详解
    • python入门之算法学习
    • python实现线性回归算法
    • Python实现七大查找算法的示例代码
    • python 算法题——快乐数的多种解法
    上一篇:Python如何实现的简单购物车程序
    下一篇:使用python爬取taptap网站游戏截图的步骤
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    用Python给图像算法做个简单应用界面 用,Python,给,图像,算法,做个,