PyQt5开发入门到IP查询工具实现

1 基本介绍

1.1 简介

,QT 是最强大的 GUI 库之一,PyQt 是 Python 绑定 QT 应用的框架,是最强大和流行的跨平台 GUI 库之一。

PyQt 兼容所有流行的操作系统,包括 Windows、Linux 和 Mac OS。 它是双重许可的,可在 GPL 和商业许可下使用。新的稳定版本是 PyQt5,最新版本的 PyQt 可从其官网下载 − riverbankcomputing.com

PyQt API 是一组包含大量类和函数的模块:

QtCore − 其他模块使用的核心非 GUI 类

QtGui − 图形用户界面组件

QtMultimedia − 低级多媒体编程类

QtNetwork − 网络编程类

QtOpenGL − OpenGL 支持类

QtScript − 用于评估 Qt 脚本的类

QtSql − 使用 SQL 进行数据库集成的类

QtSvg − 显示 SVG 文件内容的类

QtWebKit − 用于呈现和编辑 HTML 的类

QtXml − 处理 XML 的类

QtWidgets − 用于创建经典桌面风格 UI 的类

QtDesigner − 用于扩展 Qt Designer 的类

1.2 安装

1)mac下安装

pip3 install PyQt5 -i https://pypi.douban.com/simple

PyQt5开发入门到IP查询工具实现_第1张图片 执行以下代码验证安装是否成功

PyQt5开发入门到IP查询工具实现_第2张图片

代码如下:

import sys
from PyQt5.QtWidgets import QWidget, QApplication

app = QApplication(sys.argv)
widget = QWidget()
widget.resize(640, 480)
widget.setWindowTitle("Hello, PyQt5!")
widget.show()
sys.exit(app.exec())

2)安装QtTools(这个工具看需要安装,可以直接安装下面第三步的)

Qt Tools 包含:

  • 图形界面设计工具 Qt Designer,用于设计图形界面,生成 .ui文件,以 xml 格式存储界面和控件的属性;
  • UI 文件转换工具 PyUic,用于将 .ui 文件解析为 .py 文件的工具。

Qt Tools 可以使用 pip 方式安装:

pip3 install PyQt5-tools -i https://pypi.douban.com/simple

PyQt5开发入门到IP查询工具实现_第3张图片

 3)VSCODE插件配置

PyQt5开发入门到IP查询工具实现_第4张图片

PyQt5开发入门到IP查询工具实现_第5张图片

找到Designer.app 

/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/qt5_applications/Qt

PyQt5开发入门到IP查询工具实现_第6张图片

PyQt5开发入门到IP查询工具实现_第7张图片

 配置一下启动脚本

 PyQt5开发入门到IP查询工具实现_第8张图片

将脚本复制到 Designer.app 同级目录下,并将其路径配置到编辑器中即可

PyQt5开发入门到IP查询工具实现_第9张图片

PyQt5开发入门到IP查询工具实现_第10张图片

可用性验证

 PyQt5开发入门到IP查询工具实现_第11张图片

 1.3 插件使用

1)创建new window

PyQt5开发入门到IP查询工具实现_第12张图片

2)拖拽组件

PyQt5开发入门到IP查询工具实现_第13张图片 3)保存成gui文件

PyQt5开发入门到IP查询工具实现_第14张图片

4)生成对应的 py 文件

PyQt5开发入门到IP查询工具实现_第15张图片  PyQt5开发入门到IP查询工具实现_第16张图片

 5)运行

添加下列代码

PyQt5开发入门到IP查询工具实现_第17张图片

PyQt5开发入门到IP查询工具实现_第18张图片 6)继续修改

PyQt5开发入门到IP查询工具实现_第19张图片

 7)每次更新都会覆盖,单独创建启动目录

PyQt5开发入门到IP查询工具实现_第20张图片

import sys
from PyQt5 import QtCore, QtGui, QtWidgets
import Ui_tool

app = QtWidgets.QApplication(sys.argv)  # 实例化 QApplication 类,作为 GUI 主程序入口
MainWindow = QtWidgets.QMainWindow()    # 创建 MainWindow 类
ui = Ui_tool.Ui_MainWindow()                    # 实例 UI 类
ui.setupUi(MainWindow)                  # 设置窗体 UI
MainWindow.show()                       # 显示窗体
sys.exit(app.exec_())                   # 当窗口创建完成,需要结束主循环过程

2 基本开发

 PyQt5开发入门到IP查询工具实现_第21张图片

2.1 常用组件

2.1.1 QComboBox

1)常用方法列表

方法 描述
addItem() 添加一个下拉选项
addItems() 从列表中添加下拉选项
clear() 删除下拉选项集合中的所有选项
count() 返回下拉选项集合中的数目
currentText() 返回选中选项的文本
itemText(i) 获取索引为i的item的选项文本
currentIndex() 返回选中项的索引
setItemText(int index,text) 更改指定索引的文本

2)常用信号(交互信息发送)

信号 含义
Activated 当用户选中一个下拉选项时发射该信号
currentIndexChanged 当下拉选项的索引发生改变时发射该信号
highlighted 当选中一个已经选中的下拉选项时,发射该信号

3)实例

PyQt5开发入门到IP查询工具实现_第22张图片

PyQt5开发入门到IP查询工具实现_第23张图片

PyQt5开发入门到IP查询工具实现_第24张图片

 2.1.2 QComboBox

QLineEdit

  • QLineEdit是一个单行文本编辑控件;
  • QLineEdit相关的一个类是QTextEdit,它允许多行文字以及富文本编辑;

QTextEdit

  • QTextEdit可以显示多行、用来显示图像、列表和表格;

1)QLineEdit常用方法:

方法 描述
text() 取值
setText() 赋值
setAlignment() 根据对齐常量对齐文本
clear() 删除内容
setMaxLength() 设置输入的最大字符数
setReadOnly() 使文本框不可编辑

setValidator()

验证校验,可以正则校验

2)QLineEdit常用信号:

信号 含义

cursorPositionChanged()

每当光标移动触发

editingFinished()

当您按"Enter"或字段失去焦点时

returnPressed()

当你按下"Enter"

selectionChanged()

每当所选文本发生变化时

textChanged()

当框中的文本通过输入或编程方式更改时

textEdited()

每当编辑文本时

3)实例

PyQt5开发入门到IP查询工具实现_第25张图片

PyQt5开发入门到IP查询工具实现_第26张图片PyQt5开发入门到IP查询工具实现_第27张图片

 2.1.3 QPushButton

在 PyQt API 中,QPushButton 类对象提供了一个按钮,当单击该按钮时,可以对其进行编程以调用某个函数。

1)常用方法

方法 描述

setCheckable()

如果设置为 true,则识别按钮的按下和释放状态

toggle()

在可检查状态之间切换

setIcon()

显示由图像文件的像素图形成的图标

setEnabled()

当设置为 false 时,按钮变为禁用状态,因此单击它不会发出信号

isChecked()

返回按钮的布尔状态

setDefault()

将按钮设置为默认值

2)实例

PyQt5开发入门到IP查询工具实现_第28张图片

PyQt5开发入门到IP查询工具实现_第29张图片 2.1.4 QMenuBar、QMenu 和 QAction

QMenu 类提供了一个可以添加到菜单栏的小部件。 它还用于创建上下文菜单和弹出菜单。 每个 QMenu 对象可能包含一个或多个 QAction 对象或级联的 QMenu 对象。

      。。。。。。      
      bar = self.menuBar()
      file = bar.addMenu("File")
      file.addAction("New")
		
      save = QAction("Save",self)
      save.setShortcut("Ctrl+S")
      file.addAction(save)
		
      edit = file.addMenu("Edit")
      edit.addAction("copy")
      edit.addAction("paste")
		
      quit = QAction("Quit",self) 
      file.addAction(quit)
      file.triggered[QAction].connect(self.processtrigger)
      self.setLayout(layout)
      self.setWindowTitle("menu demo")
		
   def processtrigger(self,q):
      print q.text()+" is triggered"

PyQt5开发入门到IP查询工具实现_第30张图片

2.1.5 其余常用组件

PyQt5 - 基本小部件

2.2 IP查询核心功能实现 

实现输入IP查询IP的所属信息,用于IP资产列表(excel)的维护

PyQt5开发入门到IP查询工具实现_第31张图片

PyQt5开发入门到IP查询工具实现_第32张图片

 1)windows.pyPyQt5开发入门到IP查询工具实现_第33张图片

 2) 添加Ip和查询IP 

PyQt5开发入门到IP查询工具实现_第34张图片

 3)excel操作

import xlrd,xlwt
from xlutils.copy import copy

def addIP(ip,describe):
    workbook = xlrd.open_workbook("ip.xlsx",encoding_override="utf-8")
    # 获取原表格第一个sheet的名字
    all_sheet = workbook.sheet_names()
    first_sheet = workbook.sheet_by_name(all_sheet[0])
    # 获取原表格第一个sheet一写入数据的行数
    rows = first_sheet.nrows
    # 拷贝新的excel,并从rows行开始追加写入
    new_workbook = copy(workbook)
    new_sheet = new_workbook.get_sheet(0)
        
    new_sheet.write(rows, 0, ip)
    new_sheet.write(rows, 1, describe)
 
    new_workbook.save("ip.xlsx")
    
def createExcel():
    testbook = xlwt.Workbook(encoding='utf-8')
    testbook.add_sheet('ip')
    testbook.save("ip.xlsx")

def findIP(ip):
    workbook = xlrd.open_workbook("ip.xlsx",encoding_override="utf-8")
    # 获取原表格第一个sheet的名字
    all_sheet = workbook.sheet_names()
    first_sheet = workbook.sheet_by_name(all_sheet[0])
    rows = first_sheet.nrows
    describe = "none"
    for i in range(rows):
        row = first_sheet.row_values(i)
        if ip in row[0]:
            describe = row[1]
    return describe

核心逻辑实现完成,可以完成基本查询需要 

你可能感兴趣的:(python,python,开发语言,ui,qt5)