python小工具之对比excel中的人名(三)

import wx
from openpyxl import load_workbook

def get_col_value(excel_path,sheetname,column):
    wb = load_workbook(excel_path)
    ws = wb[sheetname]
    # rows = ws["A"]
    col_value = list(ws.iter_cols(min_row=2, min_col=column, max_col=column, values_only=True))[0]
    result = set()
    for i in col_value:
        result.add(str(i).strip())
    return result

class Frame(wx.Frame):

    def __init__(self, *args, **kwargs):
        super().__init__(*args,**kwargs)
        self.panel = wx.Panel(self)

        self.path_text = wx.TextCtrl(self.panel)
        self.open_button = wx.Button(self.panel, label="打开")
        self.open_button.Bind(wx.EVT_BUTTON, self.openfile)

        self.save_button = wx.Button(self.panel, label="运行")
        self.save_button.Bind(wx.EVT_BUTTON, self.view_result)

        self.content_text = wx.TextCtrl(self.panel, style=wx.TE_MULTILINE)

        self.box = wx.BoxSizer()  # 不带参数表示默认实例化一个水平尺寸器
        self. box.Add(self.path_text, proportion=5, flag=wx.EXPAND | wx.ALL, border=3)  # 添加组件

        self.box.Add(self.open_button, proportion=2, flag=wx.EXPAND | wx.ALL, border=3)  # 添加组件
        self.box.Add(self.save_button, proportion=2, flag=wx.EXPAND | wx.ALL, border=3)  # 添加组件

        self.v_box = wx.BoxSizer(wx.VERTICAL)  # wx.VERTICAL参数表示实例化一个垂直尺寸器
        self.v_box.Add(self.box, proportion=1, flag=wx.EXPAND | wx.ALL, border=3)  # 添加组件
        self.v_box.Add(self.content_text, proportion=5, flag=wx.EXPAND | wx.ALL, border=3)  # 添加组件

        self.panel.SetSizer(self.v_box)  # 设置主尺寸器

    def openfile(self, event):  # 定义打开文件事件
        dlg = wx.FileDialog(self, "选择excel路径", style=wx.DD_DEFAULT_STYLE)
        if dlg.ShowModal() == wx.ID_OK:
            excel_path = dlg.GetPath()
            self.path_text.SetValue(excel_path)
            print(excel_path)

    def view_result(self, event):
        excel_path = self.path_text.GetValue()
        if not excel_path:
            wx.MessageBox("请输入路径文件",caption="提示框",style=wx.OK|wx.CANCEL)
            return
        elif not str(excel_path).endswith(".xlsx"):
            wx.MessageBox("老弟,请输入文件后缀为.xlsx的文件")
            return

        python_value = get_col_value(excel_path, "Sheet1", 1)
        java_value = get_col_value(excel_path, "Sheet1", 2)
        equal_person = java_value & python_value
        result = f"python学习圈的总人数为:{len(python_value)}" + "\n" + \
                 f"java学习圈的总人数为: {len(java_value)}" + "\n" + \
                 f"python和java学习圈都加入的人数为: {len(equal_person)}\n" \
                 f"python和java学习圈都加入的学生名字分别是: {equal_person}"

        self.content_text.SetValue(result)

class MyApp(wx.App):
    def OnInit(self):
        self.frame = Frame(parent=None, title='Spare', pos=(900,700))
        self.frame.Bind(wx.EVT_CLOSE,self.OnCloseWindow)
        self.frame.Show()
        self.SetTopWindow(self.frame)
        return True

    def OnExit(self):
        """
        app关闭后调用的
        :return:
        """

        print("app关闭")
        return 1

    def OnCloseWindow(self, event):
        """
        # 关闭弹窗时调用的
        :param event:
        :return:
        """
        dlg = wx.MessageDialog(None, f'老弟,你要走了吗? 我会想你的{chr(0x1f600)}', '思念弹窗', wx.YES_NO | wx.ICON_QUESTION)
        retCode = dlg.ShowModal()
        if (retCode == wx.ID_YES):
            self.frame.Destroy()
        else:
            pass

if __name__ == '__main__':
    app = MyApp(False)
    app.MainLoop()
    print("over")
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值