SeAIPalette/main_tt.py

127 lines
6.9 KiB
Python

import sys, os
from MainWindow_map import Ui_MainWindow
from PyQt5 import QtWidgets, QtCore, QtSql, QtGui
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import QPixmap
import threading, subprocess
class mywindow(QtWidgets.QMainWindow, Ui_MainWindow):
def __init__(self):
super(mywindow, self).__init__()
self.setupUi(self)
self.comboBox_map.addItems(['地图0', '地图1', '地图2'])
# 地图选择
self.comboBox_algo.addItems(['野火法+牛耕法', '野火法+内螺旋法', '野火法+贪心法'])
# 算法选择
self.comboBox_axis.addItems(['x', 'y'])
# 划分方向选择
self.comboBox_render.addItems(['', ''])
self.comboBox_around.addItems(['不考虑', '考虑'])
self.comboBox_bettery.addItems(['', ''])
if self.comboBox_bettery.currentText() == '':
self.lineEdit_bettery.setEnabled(False)
def slot_bettery(self):
if self.comboBox_bettery.currentText() == '':
self.lineEdit_bettery.setEnabled(False)
if self.comboBox_bettery.currentText() == '':
self.lineEdit_bettery.setEnabled(True)
def thread_run(self):
if self.comboBox_bettery.currentText() == '':
if self.ships_num == '1':
if self.comboBox_algo.currentText() == '野火法+牛耕法':
cmd = 'python -u -m Palette.examples.wildfire_boustrophedon -c '+self.map+self.render+'--cover-ratio '+self.cover_ratio
result = subprocess.Popen(
cmd, shell=True,stdout=subprocess.PIPE).stdout
self.label_show.setText(str(result.read(),encoding="utf-8"))
elif self.comboBox_algo.currentText() == '野火法+内螺旋法':
cmd = 'python -u -m Palette.examples.wildfire_spiral -c ' + self.map + self.render + '--cover-ratio ' + self.cover_ratio
result = subprocess.Popen(
cmd, shell=True, stdout=subprocess.PIPE).stdout
self.label_show.setText(str(result.read(), encoding="utf-8"))
elif self.comboBox_algo.currentText() == '野火法+贪心法':
cmd = 'python -u -m Palette.examples.charge_multi_split_wildfire_greedy -c ' + self.map + self.render + '--cover-ratio ' + self.cover_ratio + ' -n 1'
result = subprocess.Popen(
cmd, shell=True, stdout=subprocess.PIPE).stdout
self.label_show.setText(str(result.read(), encoding="utf-8"))
elif self.ships_num != '1':
if self.comboBox_algo.currentText() == '野火法+牛耕法':
cmd = 'python -u -m Palette.examples.charge_multi_split_wildfire_boustrophedon -c '+self.map+self.render+'--cover-ratio '+self.cover_ratio+' -n '+str(self.ships_num)+' -a '+self.axis
result = subprocess.Popen(
cmd, shell=True,stdout=subprocess.PIPE).stdout
self.label_show.setText(str(result.read(),encoding="utf-8"))
elif self.comboBox_algo.currentText() == '野火法+内螺旋法':
cmd = 'python -u -m Palette.examples.charge_multi_split_wildfire_spiral -c ' + self.map + self.render + '--cover-ratio ' + self.cover_ratio+' -n '+str(self.ships_num)+' -a '+self.axis
result = subprocess.Popen(
cmd, shell=True, stdout=subprocess.PIPE).stdout
self.label_show.setText(str(result.read(), encoding="utf-8"))
elif self.comboBox_algo.currentText() == '野火法+贪心法':
cmd = 'python -u -m Palette.examples.charge_multi_split_wildfire_greedy -c ' + self.map + self.render + '--cover-ratio ' + self.cover_ratio+' -n '+str(self.ships_num)+' -a '+self.axis
result = subprocess.Popen(
cmd, shell=True, stdout=subprocess.PIPE).stdout
self.label_show.setText(str(result.read(), encoding="utf-8"))
elif self.comboBox_bettery.currentText() == '':
if self.ships_num != '1':
if self.comboBox_algo.currentText() == '野火法+牛耕法':
cmd = 'python -u -m Palette.examples.charge_multi_split_wildfire_boustrophedon -c '+self.map+self.render+'--cover-ratio '+self.cover_ratio+' -n '+str(self.ships_num)+' -a '+self.axis+' -b '+self.lineEdit_bettery.text()
result = subprocess.Popen(
cmd, shell=True,stdout=subprocess.PIPE).stdout
self.label_show.setText(str(result.read(),encoding="utf-8"))
elif self.comboBox_algo.currentText() == '野火法+内螺旋法':
cmd = 'python -u -m Palette.examples.charge_multi_split_wildfire_spiral -c ' + self.map + self.render + '--cover-ratio ' + self.cover_ratio+' -n '+str(self.ships_num)+' -a '+self.axis+' -b '+self.lineEdit_bettery.text()
result = subprocess.Popen(
cmd, shell=True, stdout=subprocess.PIPE).stdout
self.label_show.setText(str(result.read(), encoding="utf-8"))
elif self.comboBox_algo.currentText() == '野火法+贪心法':
cmd = 'python -u -m Palette.examples.charge_multi_split_wildfire_greedy -c ' + self.map + self.render + '--cover-ratio ' + self.cover_ratio+' -n '+str(self.ships_num)+' -a '+self.axis+' -b '+self.lineEdit_bettery.text()
result = subprocess.Popen(
cmd, shell=True, stdout=subprocess.PIPE).stdout
self.label_show.setText(str(result.read(), encoding="utf-8"))
elif self.ships_num == '1':
self.label_show.setText('请设置多移动节点')
def run(self):
self.cover_ratio = str(float(self.lineEdit_coverr.text()) / 100.0)
self.ships_num = self.lineEdit_shipn.text()
self.axis = self.comboBox_axis.currentText()
if self.comboBox_map.currentText() == '地图0':
self.map = 'map0'
elif self.comboBox_map.currentText() == '地图1':
self.map = 'map1'
elif self.comboBox_map.currentText() == '地图2':
self.map = 'map2'
elif self.comboBox_map.currentText() == '自定义地图':
if self.comboBox_around.currentText() == '不考虑':
self.map = 'map_actual_show'
elif self.comboBox_around.currentText() == '考虑':
self.map = 'map_actual_with_around_show'
if self.comboBox_render.currentText() == '':
self.render = ' --render '
elif self.comboBox_render.currentText() == '':
self.render = ' '
threading.Thread(target=self.thread_run).start()
self.label_show.setText('程序正在运行,请稍后!')
def stop(self):
print('2')
if __name__ == '__main__':
app = QApplication(sys.argv)
window = mywindow()
window.show()
sys.exit(app.exec_())