PyQt5实现简易电子词典

PyQt5是python中一个非常实用的GUI编程模块,功能十分强大。刚刚学完了Pyqt的编程,就迫不及待的写出了一个电子词典GUI程序。整个程序使用qt Desiner把整个gui界面做好,槽函数则自己写好的。电子词典实现了查询单词,查询历史记录,收藏和查看单词本的功能,另外为了是程序更加炫酷,还添加了一个启动界面。具体代码如下:

第一个为主程序代码,主要实现槽函数功能。

from PyQt5.QtCore import pyqtSlot
from PyQt5.QtWidgets import QMainWindow
from PyQt5 import QtWidgets
from Ui_E_Dict_Main import Ui_E_Dictory
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
import time, re

# 槽函数代码,运行程序需要运行本文件
class MainWindow(QMainWindow, Ui_E_Dictory):
  """
  Class documentation goes here.
  """
  def __init__(self, parent=None):
    """
    Constructor

    @param parent reference to the parent widget
    @type QWidget
    """
    super(MainWindow, self).__init__(parent)
    self.setupUi(self)
    # 启动时休眠1秒
    time.sleep(1)

  # 按钮1 查找单词,把单词显示在textBrowser的同时,插入历史记录
  @pyqtSlot()
  def on_pushButton_clicked(self):
    """
    Slot documentation goes here.
    """
    # 单词查询,需要先有一个'dict.txt'文件,其中有大量的英文单词和注释
    # 此处也可以先把'dict.txt'插入数据库,历史记录和单词本的插入和查询都可以直接操作数据库
    # 不过数据库需要事先安装数据库,并建立相应的表,不好打包,不太方便
    word=self.lineEdit.text()
    f=open('dict.txt', 'r')
    for line in f:
      # 对字典文件的数据进行分析,拆解为适合显示的格式
      l = re.split('[ ]+',line)
      if l[0]==word:
        interpret=' '.join(l[1:])
        data='%s\n %s'%(l[0], interpret)
        # interpret='%s: %s'%(l[0],' '.join(l[1:]))
        self.textBrowser.setText(data)
        # 当地时间
        t1=time.localtime()
        t2=time.asctime(t1)
        #self.lineEdit.setText("")#lineEdit输入后清零,可要可不要
        try:
          # 把所查询单词插入历史记录中,
          #'a'以只写文件打开一个文件,如果有原文件则追加到文件末尾
          file=open('history.txt', 'at')
          msg='%s %s'%(word, t2)
          file.write(msg)
          file.write('\n')
          file.close()
        except Exception as e:
          print(e)
    f.close()

  @pyqtSlot()
  def on_pushButton_2_clicked(self):
    """
    Slot documentation goes here.
    """
    try:
      # 查询历史记录,把历史记录显示在textBrowser中
      file=open('history.txt', 'rt')
      list=file.readlines()
      msg=''.join(list)
      self.textBrowser.setText(msg)
      file.close()
    except Exception as e:
          print(e)

  @pyqtSlot()
  def on_pushButton_3_clicked(self):
    """
    Slot documentation goes here.
    """
    try:
      # 查询单词本,把单词本显示在textBrowser中
      file=open('words.txt', 'rt')
      list=file.readlines()
      msg=''.join(list)
      self.textBrowser.setText(msg)
      file.close()
    except Exception as e:
          print(e)

  @pyqtSlot()
  def on_pushButton_4_clicked(self):
    """
    Slot documentation goes here.
    """
    word=self.lineEdit.text()
    try:
      # 把所查询单词插入单词本中
      file=open('words.txt', 'at')
      file.write(word)
      file.write('\n')
      file.close()
    except Exception as e:
      print(e)   

if __name__ == "__main__":
  import sys
  app = QtWidgets.QApplication(sys.argv)
  # 启动界面的实现,可以使程序更加炫酷
  splash=QtWidgets.QSplashScreen(QPixmap("Saved Pictures/5b517f520feaa.jpg"))
  # 启动界面显示
  splash.show()
  # 在启动界面中显示程序加载进度,参数意思分别为居中显示,蓝色字体
  splash.showMessage('正在加载图片资源', Qt.AlignCenter, Qt.blue)
  time.sleep(1)
  # 为了不与主程序干扰
  app.processEvents()
  ui = MainWindow()
  ui.show()
  # 启动界面完成
  splash.finish(ui)
  sys.exit(app.exec_())

第二个程序代码,主要实现整体的GUI界面的构建(使用Qtdesiner可以极大的简化工作量,强烈推荐)

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_E_Dictory(object):
  def setupUi(self, E_Dictory):
    E_Dictory.setObjectName("E_Dictory")
    E_Dictory.resize(658, 474)
    icon = QtGui.QIcon()
    icon.addPixmap(QtGui.QPixmap("icon/24-monitor.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
    E_Dictory.setWindowIcon(icon)
    self.centralWidget = QtWidgets.QWidget(E_Dictory)
    self.centralWidget.setObjectName("centralWidget")
    self.pushButton = QtWidgets.QPushButton(self.centralWidget)
    self.pushButton.setGeometry(QtCore.QRect(390, 400, 91, 31))
    font = QtGui.QFont()
    font.setFamily("黑体")
    font.setPointSize(14)
    self.pushButton.setFont(font)
    self.pushButton.setObjectName("pushButton")
    self.label_2 = QtWidgets.QLabel(self.centralWidget)
    self.label_2.setGeometry(QtCore.QRect(100, 400, 51, 31))
    font = QtGui.QFont()
    font.setFamily("黑体")
    font.setPointSize(14)
    self.label_2.setFont(font)
    self.label_2.setObjectName("label_2")
    self.textBrowser = QtWidgets.QTextBrowser(self.centralWidget)
    self.textBrowser.setGeometry(QtCore.QRect(100, 110, 381, 271))
    self.textBrowser.setStyleSheet("background-color: rgb(242, 255, 233);")
    self.textBrowser.setObjectName("textBrowser")
    self.lineEdit = QtWidgets.QLineEdit(self.centralWidget)
    self.lineEdit.setGeometry(QtCore.QRect(160, 400, 211, 31))
    font = QtGui.QFont()
    font.setFamily("楷体")
    font.setPointSize(10)
    self.lineEdit.setFont(font)
    self.lineEdit.setText("")
    self.lineEdit.setObjectName("lineEdit")
    self.label = QtWidgets.QLabel(self.centralWidget)
    self.label.setGeometry(QtCore.QRect(240, 60, 151, 31))
    font = QtGui.QFont()
    font.setFamily("楷体")
    font.setPointSize(14)
    font.setBold(False)
    font.setWeight(50)
    self.label.setFont(font)
    self.label.setObjectName("label")
    self.pushButton_2 = QtWidgets.QPushButton(self.centralWidget)
    self.pushButton_2.setGeometry(QtCore.QRect(510, 140, 75, 23))
    self.pushButton_2.setObjectName("pushButton_2")
    self.pushButton_3 = QtWidgets.QPushButton(self.centralWidget)
    self.pushButton_3.setGeometry(QtCore.QRect(510, 220, 75, 23))
    self.pushButton_3.setObjectName("pushButton_3")
    self.pushButton_4 = QtWidgets.QPushButton(self.centralWidget)
    self.pushButton_4.setGeometry(QtCore.QRect(510, 310, 75, 23))
    self.pushButton_4.setObjectName("pushButton_4")
    self.graphicsView = QtWidgets.QGraphicsView(self.centralWidget)
    self.graphicsView.setGeometry(QtCore.QRect(0, 0, 661, 471))
    self.graphicsView.setStyleSheet("border-image: url(:/pic/Saved Pictures/f3cb924702022fc35eb6f865d67e23a6.jpg);")
    self.graphicsView.setObjectName("graphicsView")
    self.graphicsView.raise_()
    self.pushButton.raise_()
    self.label_2.raise_()
    self.textBrowser.raise_()
    self.lineEdit.raise_()
    self.label.raise_()
    self.pushButton_2.raise_()
    self.pushButton_3.raise_()
    self.pushButton_4.raise_()
    E_Dictory.setCentralWidget(self.centralWidget)

    self.retranslateUi(E_Dictory)
    QtCore.QMetaObject.connectSlotsByName(E_Dictory)

  def retranslateUi(self, E_Dictory):
    _translate = QtCore.QCoreApplication.translate
    E_Dictory.setWindowTitle(_translate("E_Dictory", "无道词典"))
    self.pushButton.setText(_translate("E_Dictory", "查找"))
    # 快捷键回车,可以使查找按钮发生效果
    self.pushButton.setShortcut(_translate("E_Dictory", "Return"))
    self.label_2.setText(_translate("E_Dictory", "单词:"))
    # setHtml样式表可以按照自己喜好修改
    self.textBrowser.setHtml(_translate("E_Dictory", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
"p, li { white-space: pre-wrap; }\n"
"</style></head><body style=\" font-family:\'SimSun\'; font-size:9pt; font-weight:400; font-style:normal;\">\n"
"<p style=\" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><br /></p></body></html>"))
    self.label.setText(_translate("E_Dictory", "查询单词"))
    self.pushButton_2.setText(_translate("E_Dictory", "历史记录"))
    self.pushButton_3.setText(_translate("E_Dictory", "单词本"))
    self.pushButton_4.setText(_translate("E_Dictory", "添加单词"))

import dict_rc

if __name__ == "__main__":
  import sys
  app = QtWidgets.QApplication(sys.argv)
  E_Dictory = QtWidgets.QMainWindow()
  ui = Ui_E_Dictory()
  ui.setupUi(E_Dictory)
  E_Dictory.show()
  sys.exit(app.exec_())

textBrowser中的内容可以以html的格式显示出来,所有其中的文件的显示可以按照自己的喜好来设计。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Pyqt5实现英文学习词典

    运用Python语言编写程序制作英文学习词典,词典有4个基本功能:添加.查询.删除和退出.程序读取源文件路径下的txt格式词典文件,若没有就创建一个.词典文件存储方式为"英文单词 中文单词",每行仅有一对中英释义.程序会根据用户的选择进入相应的功能模块,并显示相应的操作提示.当添加的单词已存在时,显示"该单词已添加到字典库":当查询的单词不存在时,显示"字典库中未找到这个单词":但需要删除某个单词时先查询再删除该单词的全部中英文释义. 一.演示效

  • python如何制作英文字典

    本文实例为大家分享了python制作英文字典的具体代码,供大家参考,具体内容如下 功能有添加单词,多次添加单词的意思,查询,退出,建立单词文件. keys=[] dic={} def rdic(): fr = open('dic.txt','r') for line in fr: line = line.replace("\n",'') v = line.split(':') dic[v[0]] = v[1] keys.append(v[0]) fr.close() def centr

  • python爬虫之自制英汉字典

    最近在微信公众号中看到有人用Python做了一个爬虫,可以将输入的英语单词翻译成中文,或者把中文词语翻译成英语单词.笔者看到了,觉得还蛮有意思的,因此,决定自己也写一个. 首先我们的爬虫要能将英语单词翻译成中文,因此,我们就需要一个网站帮助我们做这件事情.于是,我们选定有道词典,网址为: http://dict.youdao.com/ .在该网页中我们输入单词nice,就会出来这个单词的意思,如下图: 针对上述过程,对于熟悉爬虫的读者来说,是不难完成将输入的单词的中文意思从网页中提取出来的.笔者

  • PyQt5实现简易电子词典

    PyQt5是python中一个非常实用的GUI编程模块,功能十分强大.刚刚学完了Pyqt的编程,就迫不及待的写出了一个电子词典GUI程序.整个程序使用qt Desiner把整个gui界面做好,槽函数则自己写好的.电子词典实现了查询单词,查询历史记录,收藏和查看单词本的功能,另外为了是程序更加炫酷,还添加了一个启动界面.具体代码如下: 第一个为主程序代码,主要实现槽函数功能. from PyQt5.QtCore import pyqtSlot from PyQt5.QtWidgets import

  • C++多线程实现电子词典

    本文实例为大家分享了C++多线程实现电子词典的具体代码,供大家参考,具体内容如下 // Dictionary.cpp : 定义控制台应用程序的入口点. //vs2013编译 //字典文件:https://pan.baidu.com/s/1YHtwptaq_V8j034U9_J96A #include "stdafx.h" #include <string> #include <vector> #include <iostream> #include

  • PyQt5实现简易计算器

    本文实例为大家分享了PyQt5实现简易计算器的具体代码,供大家参考,具体内容如下 效果图: 界面代码 calc_interface.py # -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'calc_interface.ui' # # Created by: PyQt5 UI code generator 5.8.2 # # WARNING! All changes made in this

  • python实现电子词典

    本文实例为大家分享了python实现电子词典的具体代码,供大家参考,具体内容如下 服务端 #!/usr/bin/env python3 from __future__ import unicode_literals # coding=utf-8 from socket import * import os import pymysql import time import sys import signal DICT_TEXT = "./dict.txt" HOST = '0.0.0.

  • Python使用Pyqt5实现简易浏览器(最新版本测试过)

    准备环境 首先我们需要的是我们的开发环境,我使用的是python 3.8.2和pyqt 5.14.2,因为有强迫症,所以喜欢使用最新版的 安装QtWebEngineWidgets 这是新版使用的web浏览器引擎,更加的贴近谷歌浏览器,好像是需要单独安装,我就是这样的 pip3 install QtWebEngineWidgets 多tab页面 做这个的时候遇到好多坑,比如在多个tab里面打开页面,要使用这个QTabWidget,这个不用我们再去下载了,已经集成了 页面链接点击无反应 这个搞了我半

  • 利用Python+PyQt5实现简易浏览器的实战记录

    目录 实验环境 依赖项安装 编程实现 浏览器有一个可以用于展示网页的窗口 代码 总结 实验环境 操作系统:Linux Mint 编辑器:vim 编程语言:python3 依赖项安装 安装PyQt5 Qt是一个跨平台的C++应用程序开发框架 sudo apt-get install python3-pyqt5 安装完成后进入python命令行界面测试是否安装正确 python3 >>>import PyQt5 执行命令后如果没有任何提示,说明安装成功 编程实现 Qt为开发者提供了QtWeb

  • python控制台英汉汉英电子词典

    用python实现了下控制台电子词典,数据来自有道,通过向有道发送http表单数据,然后将服务器返回的json数据解析得到翻译结果,代码比较简单,练练手! # coding=utf-8 # Filename: trans.py # Author: qianghaohao(CodeNutter) # Email: codenutter@foxmail.com # Program: 控制台电子词典 # import os import sys import requests import rando

  • C语言实现小型电子词典

    本文实例为大家分享了C语言实现小型词典系统,供大家参考,具体内容如下 1. 题目描述 用C语言编写一个小型词典,用户可以进行英译汉.汉译英.删除修改单词.添加单词等功能. 2.源代码 /* 小型词典系统 版本:0.9 作者:个快快 应用模型:文件增删改查 */ #include <stdio.h> #include <string.h> int worsNumber = 0; //单词数目 //---------------------- //定义结构体存储词典数据 //-----

  • 基于Android的英文词典的实现方法

    英文词典是手机中经常使用的应用.因此,在本文将结合Android来讨论如何实现一个Android版的英文词典.实现英文词典的方法很多.在本文使用了SQLite数据库来保存英文单词信息.系统通过SQLite数据库中保存的单词信息来查找到与指定英文对应的中文信息.当然,实现这样一个英文词典需要解决一系列技术问题.例如,如何将保存英文单词信息的数据库文件随程序(apk文件)一起发布:发布后如何打开数据库:如何在输入前几个字母后,在AutoCompleteTextView组件提示列表中显示以所输入字符串

随机推荐