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

文章介绍了PyQt作为强大的GUI库,包括其主要模块如QtCore、QtWidgets等,以及如何在不同操作系统上安装。接着详细讲解了QComboBox、QLineEdit、QPushButton等组件的使用方法和常见信号。此外,还展示了如何利用PyQt实现IP查询功能,涉及Excel文件的读写操作。
摘要由CSDN通过智能技术生成

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

 执行以下代码验证安装是否成功

代码如下:

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

 3)VSCODE插件配置

找到Designer.app 

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

 配置一下启动脚本

 

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

可用性验证

 

 1.3 插件使用

1)创建new window

2)拖拽组件

 3)保存成gui文件

4)生成对应的 py 文件

  

 5)运行

添加下列代码

 6)继续修改

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

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 基本开发

 

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)实例

 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)实例

 2.1.3 QPushButton

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

1)常用方法

方法描述

setCheckable()

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

toggle()

在可检查状态之间切换

setIcon()

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

setEnabled()

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

isChecked()

返回按钮的布尔状态

setDefault()

将按钮设置为默认值

2)实例

 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"

2.1.5 其余常用组件

PyQt5 - 基本小部件

2.2 IP查询核心功能实现 

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

 1)windows.py

 2) 添加Ip和查询IP 

 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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值