Python GUI编程封装代码为exe应用窗口

由于业务需要,VBA又不适合于不熟悉代码的同事使用

因此将原来的VBA代码改成Python代码并封装,后续有机会在进行改善

完整代码

import xlrd
import xlwt
from xlutils.copy import copy
from tkinter import *

def run1():
    qt1,qt2 = 0,0
    #打开表格
    try:
        workbook = xlrd.open_workbook(r‘.\\fendan.xlsx‘)
    except:
        txt.insert(END, ‘打开表格失败,请检查是否已创建表格fendan.xlsx‘)
        txt.insert(END, ‘\n‘)

    #获取名称
    sheet_names = workbook.sheet_names()
    #获取对象
    sheet1 = workbook.sheet_by_name(‘Sheet1‘)

    ##wb = xlwt.Workbook(r‘.\\fendan.xlsx‘)
    ##ws = wb.get_sheet(0)
    write_data = copy(workbook)
    write_save = write_data.get_sheet(0)

    nrows = sheet1.nrows

    #前处理,将订单号取消尾数
    for i in range(1,nrows):
        if not sheet1.cell_value(rowx=i,colx=1)[:10] ==‘‘:
##            print(sheet1.cell_value(rowx=i,colx=1)[:10])
            #取第i行2列前10个数写入i行3列
            write_save.write(i,2,sheet1.cell_value(rowx=i,colx=1)[:10])
    write_data.save(‘fendan2.xlsx‘)

    #打开表格
    workbook2 = xlrd.open_workbook(r‘.\\fendan2.xlsx‘)

    #获取对象
    sheet2 = workbook2.sheet_by_name(‘Sheet1‘)
    write_data2 = copy(workbook2)
    write_save2 = write_data2.get_sheet(0)

    #设置写入样式1
    font0 = xlwt.Font()
    pattern1 = xlwt.Pattern()
    pattern1.pattern = xlwt.Pattern.SOLID_PATTERN
    pattern1.pattern_fore_colour = 5
    style0 = xlwt.XFStyle()
    style0.pattern = pattern1
    #设置写入样式2
    pattern2 = xlwt.Pattern()
    pattern2.pattern = xlwt.Pattern.SOLID_PATTERN
    pattern2.pattern_fore_colour = 5
    pattern2.pattern_fore_colour = 2
    style1 = xlwt.XFStyle()
    style1.pattern = pattern2
    nrows = sheet2.nrows
    for k in range(1,nrows):
        for r in range(1,nrows):
            if not sheet2.cell_value(rowx=k,colx=2) == ‘‘:
##                print(k,r)
                if sheet2.cell_value(rowx=r,colx=2) == sheet2.cell_value(rowx=k,colx=5):
##                    print(sheet2.cell_value(rowx=r,colx=2),sheet2.cell_value(rowx=k,colx=5))
##                    print(sheet2.cell_value(rowx=r,colx=2) == sheet2.cell_value(rowx=k,colx=5))
                    if sheet2.cell_value(rowx=r,colx=3) == sheet2.cell_value(rowx=k,colx=6):
##                        print(sheet2.cell_value(rowx=r,colx=3),sheet2.cell_value(rowx=k,colx=6))
##                        print(sheet2.cell_value(rowx=r,colx=3) == sheet2.cell_value(rowx=k,colx=6))
                        write_save2.write(r,2,sheet2.cell_value(rowx=r,colx=2),style=style0)
                        write_save2.write(r,3,sheet2.cell_value(rowx=r,colx=3),style=style0)
                        write_save2.write(k,5,sheet2.cell_value(rowx=k,colx=5),style=style1)
                        write_save2.write(k,6,sheet2.cell_value(rowx=k,colx=6),style=style1)
                        qt1 = qt1 +sheet2.cell_value(rowx=r,colx=3)
                        qt2 = qt2 +sheet2.cell_value(rowx=k,colx=6)
    ##    print(sheet1.row_values(rowx=r,start_colx=2,end_colx=7))
    write_data2.save(‘fendan2.xlsx‘)
##    print(qt1,qt2)
    txt.insert(END, ‘区分完毕‘)
    txt.insert(END, ‘\n‘)
    txt.insert(END, (qt1,qt2))
    txt.insert(END, ‘\n‘)

root = Tk()
root.title(‘区分订单‘)
root.geometry(‘460x300‘)

lb1 = Label(root, text=‘请在Excel表格中分别输入第三、四、六、七列订单与数量‘)
lb1.place(relx=0.1, rely=0.1, relwidth=0.8, relheight=0.1)

btn1 = Button(root, text=‘输入完请关闭Excel表格,点击此按钮‘, command=run1)
btn1.place(relx=0.2, rely=0.2, relwidth=0.6, relheight=0.3)

txt = Text(root)
txt.place(rely=0.6, relheight=0.3)

lb2 = Label(root, text=‘作者:YBX‘)
lb2.place(relx=0.8, rely=0.9, relwidth=0.2, relheight=0.1)

root.mainloop()

制作Excel表格校对两列数字函数并封装为EXE

对以下参考资料表示感谢:

https://www.jianshu.com/p/91844c5bca78

https://www.cnblogs.com/jackzz/p/9431923.html

原文地址:https://www.cnblogs.com/ybxw/p/11605177.html

时间: 2024-10-13 15:05:38

Python GUI编程封装代码为exe应用窗口的相关文章

Python面向对象编程-封装

1引言 你点击了桌面上的Chrome图标,一个浏览器窗口出现了,输入网址就可以在Internet世界愉快玩耍.这一切是怎么实现的呢?Chromium这个多进程的程序是如何启动各个进程的呢?浏览器主进程(界面进程)启动了哪些线程?如何启动的呢?这些问题一直萦绕在心头,一起来看看源代码吧.本文主要针对Chromium for Mac的源代码,其它操作系统大同小异. 2背景知识 浏览器作为一个应用程序,是以进程的形式运行在操作系统上的.首先,Chromium是一个多进程的应用程序,我们需要了解Chro

python GUI编程(Tkinter)

python GUI编程(Tkinter) python提供了多个图形开发界面的库,几个常用Python GUI库如下: Tkinter: Tkinter模块("Tk 接口")是Python的标准Tk GUI工具包的接口.Tk和Tkinter可以在大多数的Unix平台下使用,同样可以应用在Windows和Macintosh系统里.,Tk8.0的后续版本可以实现本地窗口风格,并良好地运行在绝大多数平台中. wxPython:wxPython 是一款开源软件,是 Python 语言的一套优

Python GUI编程各种实现的对比

Python GUI编程各种实现的对比 从 Python 语言的诞生之日起,就有许多优秀的 GUI 工具集整合到 Python 当中,这些优秀的 GUI 工具集,使得 Python 也可以在图形界面编程领域当中大展身手,由于 Python 的流行,许多应用程序都是由 Python 结合那些优秀的 GUI 工具集编写的.下面分别介绍 Python GUI 编程的各种实现,下面的许多内容都是来自维基百科(文章后面列出了参考),这里就当做是一个没有技术色彩的整合吧. 1.Tkinter 简单介绍: 是

Python gui编程pyQt5安装步骤

Python gui编程pyQt5安装步骤 ? ? ? ? pip install PyQt5 Pip3 install PyQt5 ? ? ? ? ? ? ? https://riverbankcomputing.com/software/pyqt/download5 ? ? ? ? ? 下载地址 ? http://sourceforge.net/projects/pyqt/files/PyQt5/PyQt-5.4.1/PyQt5-5.4.1-gpl-Py3.4-Qt5.4.1-x64.exe

python GUI编程tkinter示例之目录树遍历工具

摘录 python核心编程 本节我们将展示一个中级的tkinter应用实例,这个应用是一个目录树遍历工具:它会从当前目录开始,提供一个文件列表,双击列表中任意的其他目录,就会使得工具切换到新目录中,用新目录中的文件列表代替旧文件列表.这里新增了列表框.文本框和滚动条,此外还增加了鼠标单击.键盘按下.滚动操作等回调函数.其实,整个应用就是一系列控件和函数的组合. #python 3.6 import os from time import sleep from tkinter import * #

python面向对象编程 -- 封装、继承(python3.5)

面向对象编程三要素:封装.继承和多态.本文主要看和封装.继承相关的概念:在python中多态的概念比较模糊,本文不做讨论. 1 封装 封装:将数据和操作组装到一起,对外只暴露一些接口供类外部或子类访问,隐藏数据和操作的实现细节. 在其他面向对象语言,比如java中,属性访问控制一般有三种状态:private.protectd.public.python中没有什么东西是完全不可见的,没有任何机制可以强制性的隐藏数据.所以在python中不存在真正的只能在对象内部访问的属性.一个被大多数的pytho

Python GUI编程(wxPython)

1 import wx 2 class InsertFrame(wx.Frame): 3 def __init__(self,parent,id): 4 wx.Frame.__init__(self, parent, id, "带一个按钮的窗口", size=(300,200)) 5 panel=wx.Panel(self)#创建画板 6 button=wx.Button(panel,label="关闭",pos=(240,100),size=(40,40)) 7

python GUI编程(基于PyQt5)

最近几天在网上看见说PyQt5要相对tkinter好用些,于是决定改变方向学PyQt5 本教程是基于gitbook上的PyQt5中文教程而写的,算是学习笔记吧. 第一节 对于pyqt5创建一个窗口,需要进行以下几步: 0.导入模块 1.创建一个应用对象 2.创建一个构造器 3.对窗口进行设置 4.安全退出窗口 下面是代码演示: #!/usr/bin/env python3.6 # -*- coding: utf-8 -*- #导入模 from PyQt5.QtWidgets import QAp

Python GUI编程(Tkinter)Label控件

import tkinter win = tkinter.Tk()win.title("sunck")win.geometry("400x400+200+20") '''Label:标签控件可以显示文本'''#win 父窗体#text 显示的文本内容#bg 背景色#fg 字体颜色#wraplength 指定text文本中多宽进行换行#justify 设置换行后的对齐方法#anchor 位置 n北 e东 s南 w西 center居中 ne se sw nwlabel