Python+Qt 多点最短経路(最適経路)アルゴリズムの実装

プログラム例は、Python+Qt マルチポイント最短パス (最適パス) アルゴリズムの実装を選択したものです。実行環境のインストールまたはリモート デバッグが必要な場合は、記事の下部にある個人用QQ名刺を参照してリモート アシスタンスを入手してください。プロの技術者!

序文

このブログでは、「Python+Qt 多点最短パス (最適パス) アルゴリズムの実装」のコードを作成しています。コードはクリーンで規則的で読みやすいです。学習にも応用にもおすすめです。


演算結果

ここに画像の説明を挿入します


記事ディレクトリ

1. 必要なツールとソフトウェア
2. 使用手順
       1. メインコード
       2. 操作結果
3. オンラインサポート

1. 必要なツールとソフトウェア

       1.Qt
       2.Python

2. 利用手順

コードは次のとおりです(例)。

# 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_())

演算結果

ここに画像の説明を挿入します

3. オンラインサポート:

動作環境のインストールやリモート デバッグが必要な場合は、記事の下部にある個人用QQ名刺を参照して、プロの技術者によるリモート アシスタンスをご利用ください。

1) リモートインストールと実行環境、コードデバッグ
2) Visual Studio、Qt、C++、Python プログラミング言語入門
3) インターフェースの美化
4) ソフトウェア制作 5
) クラウドサーバーアプリケーション
6) Web サイト制作

現在の記事のリンク: https://blog.csdn.net/alicema1111/article/details/132666851
個人ブログのホームページ: https://blog.csdn.net/alicema1111?type=
ブロガーによるすべての記事はここをクリック: https://blog.csdn.net/alicema1111?type= 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/詳細/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

おすすめ

転載: blog.csdn.net/alicema1111/article/details/134400545