Python+Qt多点最短路径(最优路径)算法实现

news2024/11/26 10:03:42

程序示例精选
Python+Qt多点最短路径(最优路径)算法实现
如需安装运行环境或远程调试,见文章底部个人QQ名片,由专业技术人员远程协助!

前言

这篇博客针对《Python+Qt多点最短路径(最优路径)算法实现》编写代码,代码整洁,规则,易读。 学习与应用推荐首选。


运行结果

在这里插入图片描述


文章目录

一、所需工具软件
二、使用步骤
       1. 主要代码
       2. 运行结果
三、在线协助

一、所需工具软件

       1. Qt
       2.Python

二、使用步骤

代码如下(示例):

# coding:utf-8
import sys
#从转换的.py文件内调用类
import cv2

from PyQt5 import QtWidgets

from PyQt5 import QtWidgets, QtCore, QtGui
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
import floyd


global imgName
global imgT
imgT=[]



from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_Dialog(object):
    def setupUi(self, Dialog):
        Dialog.setObjectName("Dialog")
        Dialog.resize(579, 501)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(Dialog.sizePolicy().hasHeightForWidth())
        Dialog.setSizePolicy(sizePolicy)
        self.gridLayout_2 = QtWidgets.QGridLayout(Dialog)
        self.gridLayout_2.setObjectName("gridLayout_2")
        self.frame = QtWidgets.QFrame(Dialog)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(5)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.frame.sizePolicy().hasHeightForWidth())
        self.frame.setSizePolicy(sizePolicy)
        self.frame.setFrameShape(QtWidgets.QFrame.Box)
        self.frame.setFrameShadow(QtWidgets.QFrame.Raised)
        self.frame.setObjectName("frame")
        self.gridLayout = QtWidgets.QGridLayout(self.frame)
        self.gridLayout.setObjectName("gridLayout")
        self.label = QtWidgets.QLabel(self.frame)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(1)
        sizePolicy.setHeightForWidth(self.label.sizePolicy().hasHeightForWidth())
        self.label.setSizePolicy(sizePolicy)
        self.label.setStyleSheet("background-color: rgb(255, 255, 255);")
        self.label.setAlignment(QtCore.Qt.AlignCenter)
        self.label.setObjectName("label")
        self.gridLayout.addWidget(self.label, 0, 0, 1, 1)
        self.gridLayout_2.addWidget(self.frame, 0, 1, 5, 1)
        self.frame_2 = QtWidgets.QFrame(Dialog)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(1)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.frame_2.sizePolicy().hasHeightForWidth())
    sizePolicy.setHeightForWidth(self.textEdit.sizePolicy().hasHeightForWidth())
        self.textEdit.setSizePolicy(sizePolicy)
        self.textEdit.setMinimumSize(QtCore.QSize(0, 150))
        font = QtGui.QFont()
        font.setFamily("微软雅黑")
        font.setPointSize(16)
        self.textEdit.setFont(font)
        self.textEdit.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
        self.textEdit.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAsNeeded)
        self.textEdit.setObjectName("textEdit")
        self.gridLayout_3.addWidget(self.textEdit, 6, 0, 1, 1)
        spacerItem = QtWidgets.QSpacerItem(17, 130, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
        self.gridLayout_3.addItem(spacerItem, 7, 0, 1, 1)
        self.pushButton = QtWidgets.QPushButton(self.frame_2)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(1)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.pushButton.sizePolicy().hasHeightForWidth())
        self.pushButton.setSizePolicy(sizePolicy)
        font = QtGui.QFont()
        font.setFamily("微软雅黑")
        font.setPointSize(16)
        font.setBold(False)
        font.setWeight(50)
        self.pushButton.setFont(font)
        self.pushButton.setObjectName("pushButton")
        self.gridLayout_3.addWidget(self.pushButton, 0, 0, 1, 1)
        self.pushButton_3 = QtWidgets.QPushButton(self.frame_2)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
  
class myWin(QtWidgets.QWidget, Ui_Dialog):

    def __init__(self):
        super(myWin, self).__init__()
        self.setupUi(self)
        self.pushButton_2.hide()
    def openFileButton(self):
        global imgName
        imgName, imgType  = QFileDialog.getOpenFileName(self,"打开文件","./","files(*.*)")
        frame = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
        height, width, bytesPerComponent = frame.shape
        self.q_image = QtGui.QImage(frame.data,bytesPerLine, QtGui.QImage.Format_RGB888).scaled(
        self.update()
    def saveFileButton(self):
        print("test")
    def recogPerson(self):
        self.textEdit.clear()
        # source = 1
        # destination = 0
        source=self.comboBox.currentText()
        destination=self.comboBox_2.currentText()
        print("source",source)
        print("destination",destination)
        source=int(source)
        destination = int(destination)
   self.textEdit.append("从"+str(source)+"到"+str(destination)+"的最短距离是 "+str(floyd.shortest_distances[source][destination]))
        self.textEdit.append("路径: "+str(floyd.print_path(floyd.next_nodes, source, destination)))
if __name__=="__main__":
    import sys
    QApplication.setAttribute(Qt.AA_EnableHighDpiScaling)
    app=QtWidgets.QApplication(sys.argv)
    Widget=myWin()
    Widget.showMaximized();
    Widget.show()
    sys.exit(app.exec_())

运行结果

在这里插入图片描述

三、在线协助:

如需安装运行环境或远程调试,见文章底部个人 QQ 名片,由专业技术人员远程协助!

1)远程安装运行环境,代码调试
2)Visual Studio, Qt, C++, Python编程语言入门指导
3)界面美化
4)软件制作
5)云服务器申请
6)网站制作

当前文章连接:https://blog.csdn.net/alicema1111/article/details/132666851
个人博客主页:https://blog.csdn.net/alicema1111?type=blog
博主所有文章点这里:https://blog.csdn.net/alicema1111?type=blog

博主推荐:
Python人脸识别考勤打卡系统:
https://blog.csdn.net/alicema1111/article/details/133434445
Python果树水果识别:https://blog.csdn.net/alicema1111/article/details/130862842
Python+Yolov8+Deepsort入口人流量统计:https://blog.csdn.net/alicema1111/article/details/130454430
Python+Qt人脸识别门禁管理系统:https://blog.csdn.net/alicema1111/article/details/130353433
Python+Qt指纹录入识别考勤系统:https://blog.csdn.net/alicema1111/article/details/129338432
Python Yolov5火焰烟雾识别源码分享:https://blog.csdn.net/alicema1111/article/details/128420453
Python+Yolov8路面桥梁墙体裂缝识别:https://blog.csdn.net/alicema1111/article/details/133434445

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1208180.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DDD设计模式需要在存储层之前就需要有ID,如何实现?

在DDD设计领域中, 聚合根 或者实体在存储层之前就需要有id。一般采用如下类提前生成,然后直接落库。 DDD元素 在使用DDD设计系统时,主要包括Entity,Value Object,Service,Aggregate,Repository,Factory,Domain Event,Moudle等元素 在建模时,Entity可以用来代表一个事物…

数据分析的流程:CRISP-DM方法和SEMMA方法

CRISP-DM方法 SEMMA方法 角色与职责:EDIT数字化模型

Springboot 程序实现加密,禁止 jadx 反编译

在Spring Boot中实现程序加密和禁止jadx反编译是一个复杂的问题。虽然无法完全禁止反编译,但可以通过一些技术手段来提高代码的安全性。 以下是一些可能的措施: 使用混淆工具:使用Java代码混淆工具(如ProGuard或YGuard&#xff0…

比较LeNet、AlexNet、VGG和ResNet模型及其优缺点的实际实验。

一、说明 卷积神经网络,有很多种类,这不仅仅是各种试验或尝试。而且是已经设计好的网络存在若干不尽人意之处,需要弥补和改进。因此,本文就是记录这些网络的优缺点,从新意上说,本文全无,但是从启…

Sandbox: bash(5613) deny(1) file-write-create 错误解决

Showing Recent Errors Only Sandbox: bash(5613) deny(1) file-write-create /Users/xx/Dev/UniappLearn/MSLUniappDemo/Pods/resources-to-copy-MSLUniappDemo.txt image.png 解决方法 build setting搜索ENABLE_USER_SCRIPT_SANDBOXING,YES(默认&…

企业如何利用好用户画像对客户进行精准营销?提高营销转化?

随着市场竞争的加剧,企业对于客户的需求和行为越来越关注,如何利用好用户画像对客户进行精准营销,提高营销转化,成为企业关注的焦点。 一、了解用户需求和行为 首先,企业需要了解客户的需求和行为,包括客户…

AK F.*ing leetcode 流浪计划之半平面求交

欢迎关注更多精彩 关注我,学习常用算法与数据结构,一题多解,降维打击。 本期话题:半平面求交 背景知识 学习资料 视频讲解 https://www.bilibili.com/video/BV1jL411C7Ct/?spm_id_from333.1007.top_right_bar_window_history…

excel用RAND函数、或者RAND.NV函数生成随机数、这两个函数的区别

用RAND函数生成大于0小于1的随机数 插入-》函数: 选择RAND函数: 点击“继续”: 点击“确定”,就生成随机数了: 用RAND.NV函数生成一个大于0小于1的随机数 步骤跟RAND函数相同,只不过选择的是RAN…

[RK3568][Android12.0]--- 系统自带预置第三方APK方法

Platform: RK3568 OS: Android 12.0 Kernel: 4.19 Rockchip默认提供了机制来预置第三方APK, 方法很简单: 1. 在device/rockchip/rk3568创建preinstall目录(如果要可卸载,那就创建preinstall_del目录) 2. 将你要预安装的APK放进此目录即可 preinstall 不…

Karmada更高效地实现故障转移

随着云原生技术的发展,其应用场景不断扩大。越来越多的企业开始将应用程序部署在 Kubernetes 集群中,随着 Kubernetes 集群规模的不断扩大,也带来了许多管理挑战,例如多集群间负载均衡、资源调度、故障转移等问题。为了解决这些问…

μC/OS-II---时间管理(os_time.c)

目录 时间管理相关(os_time.c)Task延迟按时、分、秒、毫秒延时恢复被延时的Task返回系统当前的Tick计数值设置系统的Tick计数值 时间管理相关(os_time.c) Task延迟 void OSTimeDly (INT32U ticks) {INT8U y; #if OS_CRITI…

MHA实验

MHA: 什么是MHA masterhigh availabulity :基于主库的高可用环境下:主从复制,故障切换 主从的架构: MHA:最少要一主两从 mysql的单点故障问题,一旦主库崩溃,MHA可以在0-30秒内可以自动完成故障切换 M…

1m照片尺寸怎么调?三个方法解决!

为了满足不同的需求,比如上传到网站、存储在移动设备上或传输给他人等,将照片尺寸调整到1M可以有效地减少照片占用的存储空间,同时保持相对较高的图像质量。下面三种好用的方法。 方法一:使用嗨格式压缩大师 1、打开软件&#xf…

VEX —— Half-edges

目录 一,概述 二,等效 三,函数 在一些VEX函数,可将边看成为每个面非共享的半边; 一,概述 在houdini,边通常被视为面之间无方向且共享的,然而,对于一些任务&#xff08…

Stable Diffusion新手村-我们一起完成AI绘画

1.工具搭建 感谢bilibili的"秋葉aaaki"大佬出的整合包,让我们方便下载安装一键启动,去它的网盘里下载 我的显卡设备,暂时还够哈,出图速度还可以1-2分钟比较美的质感画面 下载以后需要解压下sd-webui-aki-v4.4.7z&#…

解决室内种植最大弊端的是方法—植物生长灯

对于“城市农夫”来说,植物在自己的精心照料下开花结果是最好的“心灵鸡汤”。而对于室内种植,其实存在着很大的弊端。 由于室内无法提供足够自然阳光,在一些气候条件不佳或长冬季的地方,自然光照不足会严重限制植物的生长&#…

【华为云IaaS基础三件套之----计算ECS、网络EIP、存储EVS】

MD[华为云IaaS基础三件套----计算、网络、存储] 华为云IaaS基础三件套之----计算ECS、网络EIP、存储EVS 说明: 这里只是简单从计算/网络/存储,进行介绍,阐明云上对于云下的优势;因ECS是三者综合,故最后说明。 1.网络----弹性公…

项目经理为什么要考PMP?PMP考试条件有哪些?

考得PMP,项目经理可以有以下收获: 1、面试条件上:有PMP证书优先; 2、覆盖行业和职位范围广,医疗,互联网,机械,建筑金融,汽车,零售等各行各业,基…

C 语言数组

C 语言数组 在本教程中,您将学习如何使用数组。您将借助示例学习如何声明,初始化和访问数组的元素。 数组是可以存储多个值的变量。例如,如果要存储100个整数,则可以为其创建一个数组。 示例 cint data[100];如何声明数组&…

【Kotlin精简】第8章 协程

1 简介 Kotlin 中的协程提供了一种全新处理并发的方式,您可以在 Android 平台上使用它来简化异步执行的代码。协程是从 Kotlin 1.3 版本开始引入,但这一概念在编程世界诞生的黎明之际就有了,最早使用协程的编程语言可以追溯到 1967 年的 Sim…