虫虫的英语字典

给虫虫做的第一个 Python 小工具

# -*- coding: utf-8 -*-
#########################################################################################################################
#                                                   英语字典
#_______________________________________________________________________________________________________________________
#     版本: V01
# 变更记录: 初始创建
#   变更人: 刘晶
# 变更时间: 20240408
#_______________________________________________________________________________________________________________________
#
#
#########################################################################################################################


from PyQt5.QtWidgets import (QApplication, QMainWindow, QLabel, QLineEdit, QFileDialog, QTextBrowser, \
    QPushButton, QGroupBox, QGridLayout)
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QIcon, QPixmap, QGuiApplication
from openpyxl import load_workbook
import sys
import time



# “def” 是用来定义函数的,下面定义了一个查字典函数,你要把界面上的中文输入框和英文输出框,
# 还有表格的数据给这个函数,它在表格里查到了中文的英文意思,就会把英文显示在界面上。
def HanShu_ChaZiDian(ZhongWen_ShuRuKuang, YingWen_ShuRuKuang, ShuJu):

    YaoChaDe_ZhongWen = ZhongWen_ShuRuKuang.text()  # 取出输入的中文

    BiaoGe_ZuiDaHangShu = ShuJu.max_row  # 获取表格的最大行数

    ChaZhaoJieGuo_WenBen = ''  # 查找结果的文本

    for i in range(1, BiaoGe_ZuiDaHangShu):

        BiaoGeDe_YingWen = ShuJu['A' + str(i)].value
        BiaoGeDe_ZhongWen = ShuJu['B' + str(i)].value

        ChaZhaoJieGuo = BiaoGeDe_ZhongWen.find(YaoChaDe_ZhongWen)  # 在表格的中文中查找是否有输入查询的中文

        if ChaZhaoJieGuo != -1:  # 如果没找到 ChaZhaoJieGuo 是等于 -1 的

            if ChaZhaoJieGuo_WenBen:

                ChaZhaoJieGuo_WenBen = ChaZhaoJieGuo_WenBen + ' \n' + '[ ' + BiaoGeDe_YingWen + ' ] ' +  BiaoGeDe_ZhongWen  # 加号可以连接字符串
            
            else:

                ChaZhaoJieGuo_WenBen = '[ ' + BiaoGeDe_YingWen + ' ] ' + BiaoGeDe_ZhongWen
            
    if ChaZhaoJieGuo_WenBen:

        YingWen_ShuRuKuang.setText(ChaZhaoJieGuo_WenBen)

    else:

        YingWen_ShuRuKuang.setText('表格中没有查到')

        QApplication.processEvents()  # 这条语句可以刷新界面的显示,如果没有这条语句,上面这条语句运行之后,界面不会显示更新的内容。

        time.sleep(1.5)  # 等待 1.5 秒,在运行下面的语句。

        YingWen_ShuRuKuang.clear()  # 清空输入框中的内容
        
    QApplication.processEvents()  # 这条语句可以刷新界面的显示,如果没有这条语句,上面这条语句运行之后,界面不会显示更新的内容。






# 程序从这里开始运行————————————————————————————————————————————————————————————————————————————————————————————————————

# 如果有两个屏幕,工具界面从一个屏幕拉到另一个屏幕会变形,有了下面三条语句就不会变形。
QGuiApplication.setAttribute(Qt.AA_EnableHighDpiScaling)
QGuiApplication.setAttribute(Qt.AA_UseHighDpiPixmaps)
QGuiApplication.setHighDpiScaleFactorRoundingPolicy(Qt.HighDpiScaleFactorRoundingPolicy.PassThrough)


App = QApplication(sys.argv)  # 创建一个应用程序


# 弹窗选择 《英语单词和中文意思.xlsx》 表格
BiaoGe_LuJing = QFileDialog.getOpenFileName(None, "请选择 《英语单词和中文意思.xlsx》 表格", None, "(*.*)")
BiaoGe_LuJing = BiaoGe_LuJing[0]

if BiaoGe_LuJing:  # 如果选择了表格,才生成界面。
    
    BiaoGe = load_workbook(filename = BiaoGe_LuJing, data_only = True)  # 读取表格,并且只读取数据。
    SheetName = '单词'
    ShuJu = BiaoGe[SheetName]  # 读取 “单词” 这个 Sheet 的数据

    JieMian = QMainWindow()  # 新建一个窗口
    JieMian.setWindowTitle('虫虫的英语字典')  # 窗口的标题设置成 “虫虫的英语字典”
    Icon = QIcon()  # 新建一个图标
    Icon.addPixmap(QPixmap('./Picture.ico'), QIcon.Normal, QIcon.Off)  # 图标的图片用 “./Config/Picture.ico”
    JieMian.setWindowIcon(Icon)  # 将图标放置到窗口界面上
    JieMian.setFixedSize(450, 300)  # 调整窗口的大小为 宽:450像素点  高:300像素点

    ZhongWen_BiaoTi = QLabel('输入中文:')  # 新建标签 “输入中文”
    ZhongWen_ShuRuKuang = QLineEdit()  # 新建一个中文输入框,这个框只可以显示一行的内容。

    YingWen_BiaoTi = QLabel('输出英文:')  # 新建标签 “输出英文”
    YingWen_ShuRuKuang = QTextBrowser()  # 新建一个英文输出框,这个框可以显示多行的内容。

    ChaZhao = QPushButton('查找单词')  # 新建一个按钮
    # 按 “查找单词” 按钮会调用 “HanShu_ChaZiDian” 函数
    ChaZhao.clicked.connect(lambda:HanShu_ChaZiDian(ZhongWen_ShuRuKuang, YingWen_ShuRuKuang, ShuJu))

    WangGe = QGridLayout()  # 新建一个网格
    WangGe.setSpacing(10)  # 设置网格的间隔为 10 个像素

    # 网格我把它分成 5 行 6 列,把按钮,输入框这些东西挂在网格上。

    # WangGe.addWidget(ZhongWen_BiaoTi, 0, 0, 1, 1)
    # 第一个数字 “0” 代表从网格的第一行开始, 第二个数字 “0” 代表从网格的第一列开始, 
    # 第三个数字 “1” 代表 “ZhongWen_BiaoTi” 这个标签占用网格一行的高度,
    # 第四个数字 “1” 代表 “ZhongWen_BiaoTi” 这个标签占用网格一列的宽度。
    WangGe.addWidget(ZhongWen_BiaoTi, 0, 0, 1, 1)
    WangGe.addWidget(ZhongWen_ShuRuKuang, 0, 1, 1, 4)

    WangGe.addWidget(YingWen_BiaoTi, 1, 0, 1, 1)
    WangGe.addWidget(YingWen_ShuRuKuang, 1, 1, 3, 4)

    WangGe.addWidget(ChaZhao, 4, 1, 1, 3)

    MianBan = QGroupBox()  # 新建一个面板

    MianBan.setLayout(WangGe)  # 把网格挂在面板上
    JieMian.setCentralWidget(MianBan)  # 把面板挂在窗口上

    JieMian.show()  # 显示界面窗口
    sys.exit(App.exec_())  # 运行应用程序事件循环,并在事件循环结束后退出程序。  就是让界面一直显示,直到你关闭界面。









































































  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值