Sharkkkyu 2024-05-08 16:02 采纳率: 0%
浏览 2

如何强制关闭另一个py文件函数

这是我做的项目,下为main.py文件,作用是ui窗体。本意的逻辑是 check_status时,如果status=1,运行start函数,如果status=0停止运行start函数。但是由于start函数是从start.py文件中引用,并且start.py是写在一个死循环中,导致这个函数没法关闭,想问大家如何强制停止这个函数的运行呀?
main.py:

import time

from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from Ui_interface import *
from Ui_interface2 import *
from start import start
import threading
import sys
import os
import shutil
import datetime

'''数据库基本连接信息'''
# db = pymysql.connect(host='127.0.0.1', port=3306, user='root', password='123456', db='cornpm', charset='utf8')

import pyodbc
db= pyodbc.connect('DRIVER={SQL Server};SERVER=DESKTOP-3FR21NL;DATABASE=CornPM;UID=sa;PWD=yusongmin030912')
class StartThread(QThread):

    def __init__(self):

        super().__init__()
        self.running = False
        self.ADDR = 'D:/桌面/mqms_yolov3 (2)/mqms_yolov3/result/unHandled'
    def run(self):
        while True:
            self.check_status()
    def check_status(self):
        try:
            db = pyodbc.connect('DRIVER={SQL Server};SERVER=DESKTOP-3FR21NL;DATABASE=CornPM;UID=sa;PWD=yusongmin030912')
            cursor = db.cursor()
            cursor.execute("SELECT status FROM LStatus WHERE id = 1")
            row = cursor.fetchone()
            if row and row[0] == 1:
                # 如果状态为 1,则运行 start 函数
                start()
        except pyodbc.Error as e:
            print("Error accessing SQL Server:", e)
        finally:
            cursor.close()
            db.close()

class Main(QMainWindow,Ui_MainWindow):  
    signB = pyqtSignal(list)
    running_changed = pyqtSignal(bool)
    def __init__(self, parent = None):
        super(Main, self).__init__(parent)
        self.setupUi(self)
        self.running = False


        self.ADDR = 'D:/桌面/mqms_yolov3 (2)/mqms_yolov3/result/unHandled'
        '''连接数据库读取数据'''
        self.noruser_cur = db.cursor()

        self.noruser_sqlstring = "select * from noruser where "
        self.noruser_cur.execute("SELECT * FROM noruser")
        self.noruser_sql_data = self.noruser_cur.fetchall()
        
        self.picinfo_cur = db.cursor()  
        self.picinfo_sqlstring = "select * from BlockData where "
        self.picinfo_cur.execute("SELECT * FROM BlockData")
        self.picinfo_sql_data = self.picinfo_cur.fetchall() 
        self.picinfo_col_lst = [tup[0] for tup in self.picinfo_cur.description]
        self.tableWidget.verticalHeader().setVisible(False)  # 隐藏垂直表头
        self.tableWidget.horizontalHeader().setDefaultAlignment(Qt.AlignCenter) #表头文字居中
        self.tableWidget.horizontalHeader().setStyleSheet("QHeaderView::section{background:rgb(23, 124, 176, 0.8);color: white;}");#设置表头背景和字体颜色
        self.tableWidget.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch) #设置列宽度自适应
        
        self.tableWidget.setRowCount(len(self.picinfo_sql_data))  
        self.tableWidget.setColumnCount(len(self.picinfo_col_lst)+1)
        self.picinfo_col_lst.insert(0,'删除')
        self.tableWidget.setHorizontalHeaderLabels(self.picinfo_col_lst)
        
        self.checkBox.stateChanged.connect(self.choose1)
        self.checkBox_2.stateChanged.connect(self.choose2)
        
        for i in range(len(self.picinfo_sql_data)):
            item = QtWidgets.QTableWidgetItem()
            item.setCheckState(QtCore.Qt.Unchecked)
            item.setData(1, item.checkState())
            self.tableWidget.setItem(i, 0, item)
            
        self.tableWidget.verticalHeader().setVisible(False)
        
        for i in range(len(self.picinfo_sql_data)):  #列表中填入响应的值
            for j in range(len(self.picinfo_col_lst)-1):
                self.tableWidget.setItem(i, j+1, QTableWidgetItem(str(self.picinfo_sql_data[i][j])))
                self.tableWidget.item(i, j+1).setTextAlignment(Qt.AlignCenter) 

        
        self.plinfo_cur = db.cursor()  
        self.plinfo_sqlstring = "select * from PLInfo where "
        self.plinfo_cur.execute("SELECT * FROM PLInfo")
        self.plinfo_sql_data = self.plinfo_cur.fetchall() 
        self.plinfo_col_lst = [tup[0] for tup in self.plinfo_cur.description]
        self.Lstatus_cur = db.cursor()
        self.status_sqlstring = "select status from LStatus where ID = 1"
        self.Lstatus_cur.execute(self.status_sqlstring)
        self.status_info = self.Lstatus_cur.fetchall()
        print(self.status_info[0])
        # print(self.plinfo_sql_data)
        
        self.tableWidget_2.verticalHeader().setVisible(False)  # 隐藏垂直表头
        self.tableWidget_2.horizontalHeader().setDefaultAlignment(Qt.AlignCenter) #表头文字居中
        self.tableWidget_2.horizontalHeader().setStyleSheet("QHeaderView::section{background:rgb(23, 124, 176, 0.8);color: white;}");#设置表头背景和字体颜色
        self.tableWidget_2.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch) #设置列宽度自适应
        
        self.tableWidget_2.setRowCount(len(self.plinfo_sql_data))
        self.tableWidget_2.setColumnCount(len(self.plinfo_col_lst)+1)
        self.plinfo_col_lst.insert(0,'删除')
        self.tableWidget_2.setHorizontalHeaderLabels(self.plinfo_col_lst)
        
        for i in range(len(self.picinfo_sql_data)):
            item = QtWidgets.QTableWidgetItem()
            item.setCheckState(QtCore.Qt.Unchecked)
            item.setData(1, item.checkState())
            self.tableWidget_2.setItem(i, 0, item)
        self.tableWidget_2.verticalHeader().setVisible(False)
        
        for i in range(len(self.plinfo_sql_data)):  #列表中填入响应的值
            for j in range(len(self.plinfo_col_lst)-1):
                self.tableWidget_2.setItem(i, j+1, QTableWidgetItem(str(self.plinfo_sql_data[i][j])))
                self.tableWidget_2.item(i, j+1).setTextAlignment(Qt.AlignCenter)

         #按钮组件(重置)
        self.pushButton_5.clicked.connect(self.Login)       #点击登录
        self.pushButton_2.clicked.connect(self.MainPage2)     #页面跳转
        self.pushButton_3.clicked.connect(self.MainPage3)  
        self.pushButton_4.clicked.connect(self.MainPage1) 
        self.tableWidget_2.itemDoubleClicked.connect(self.interface2)
        self.pushButton_6.clicked.connect(self.delete1)   #删除第一个表格数据
        self.pushButton_8.clicked.connect(self.delete2)   #删除第二个表格数据
        self.pushButton_18.clicked.connect(self.choose)   #选择图片
        self.pushButton_19.clicked.connect(self.shangchuan)   #上传图片
        self.pushButton_20.clicked.connect(self.re_)   #重新执行
        self.pushButton_9.clicked.connect(self.check2)   #搜索
        self.pushButton_7.clicked.connect(self.check)   #搜索
        self.pushButton_11.clicked.connect(self.gotoregister) #注册页面
        self.pushButton_16.clicked.connect(self.BacktoIndex) #返回
        self.pushButton_15.clicked.connect(self.register) #注册
        self.pushButton_12.clicked.connect(self.StatusChange)#改状态
        self.pushButton_2.setEnabled(False)
        self.pushButton_3.setEnabled(False)
        self.pushButton_4.setEnabled(False)
        self.pushButton_12.setEnabled(False)
        self.label_9.setText("")

########################################################################

        
##        #界面跳转逻辑
    def StatusChange(self):
        try:
            # 连接数据库
            db = pyodbc.connect('DRIVER={SQL Server};SERVER=DESKTOP-3FR21NL;DATABASE=CornPM;UID=sa;PWD=yusongmin030912')
            cursor = db.cursor()

            # 查询当前状态
            cursor.execute("SELECT status FROM LStatus WHERE id = 1")
            current_status = cursor.fetchone()[0]

            # 根据当前状态更新状态值
            new_status = 1 if current_status == 0 else 0

            # 更新状态
            cursor.execute("UPDATE LStatus SET status = ? WHERE id = 1", (new_status,))
            db.commit()
            if new_status == 1:
                self.label_9.setText("循环检测中")
            else:
                self.label_9.setText("循环停止")
            # 关闭数据库连接
            cursor.close()
            db.close()



        except pyodbc.Error as e:
            print("Error accessing SQL Server:", e)
    def Login(self):
        stand = 0
        flag = 0

        for i in range(len(self.noruser_sql_data)):  #判断是否符合账号密码,符合则跳转界面,否则弹出提示
            if self.lineEdit.text() == str(self.noruser_sql_data[i][2]) and self.lineEdit_2.text() == str(self.noruser_sql_data[i][3]):
                flag = i
                stand = 1
                # print(self.noruser_sql_data[i][2])
                # print(self.noruser_sql_data[i][3])
        if stand == 1:
            self.stackedWidget.setCurrentIndex(1)
            self.pushButton_2.setEnabled(True)
            self.pushButton_3.setEnabled(True)
            self.pushButton_4.setEnabled(True)
            self.pushButton_12.setEnabled(True)
            self.label_3.setText("欢迎用户:"+self.noruser_sql_data[flag][2])
            self.start_thread = StartThread()
            self.start_thread.start()
            if self.status_info[0][0] == 1:
               self.label_9.setText("循环检测中")
            else:
               self.label_9.setText("循环停止")

        else:
            self.reply = QMessageBox.warning(self, "提示", "用户名或密码错误")


    def MainPage2(self):
        self.plinfo_cur.execute("SELECT * FROM PLInfo")
        self.plinfo_sql_data = self.plinfo_cur.fetchall() 
        self.tableWidget_2.setRowCount(len(self.plinfo_sql_data))
        for i in range(len(self.picinfo_sql_data)):
            item = QtWidgets.QTableWidgetItem()
            item.setCheckState(QtCore.Qt.Unchecked)
            item.setData(1, item.checkState())
            self.tableWidget_2.setItem(i, 0, item)
        self.tableWidget_2.verticalHeader().setVisible(False)
        for i in range(len(self.plinfo_sql_data)):  #列表中填入响应的值
            for j in range(len(self.plinfo_col_lst)-1):
                self.tableWidget_2.setItem(i, j+1, QTableWidgetItem(str(self.plinfo_sql_data[i][j])))
                self.tableWidget_2.item(i, j+1).setTextAlignment(Qt.AlignCenter) 
        
        
        self.stackedWidget.setCurrentIndex(2)
    def MainPage1(self):
        self.picinfo_cur.execute("SELECT * FROM BlockData")
        self.picinfo_sql_data = self.picinfo_cur.fetchall() 
        self.tableWidget.setRowCount(len(self.picinfo_sql_data))  
        self.checkBox.stateChanged.connect(self.choose1)
        self.checkBox_2.stateChanged.connect(self.choose2)
        
        for i in range(len(self.picinfo_sql_data)):
            item = QtWidgets.QTableWidgetItem()
            item.setCheckState(QtCore.Qt.Unchecked)
            item.setData(1, item.checkState())
            self.tableWidget.setItem(i, 0, item)
            
        self.tableWidget.verticalHeader().setVisible(False)
        for i in range(len(self.picinfo_sql_data)):  #列表中填入响应的值
            for j in range(len(self.picinfo_col_lst)-1):
                self.tableWidget.setItem(i, j+1, QTableWidgetItem(str(self.picinfo_sql_data[i][j])))
                self.tableWidget.item(i, j+1).setTextAlignment(Qt.AlignCenter)

        
        self.stackedWidget.setCurrentIndex(1)
    def MainPage3(self):
        self.stackedWidget.setCurrentIndex(3)
    def gotoregister(self):
        self.stackedWidget.setCurrentIndex(4)
        # print("gotoregister has been used")
    def register(self):
        legal = 0 #注册填表合法性
        # print("register has been used")
        if self.lineEdit_13.text() == self.lineEdit_14.text() and self.lineEdit_13.text() != "" and self.lineEdit_12.text()!= "":
            legal = 1
        elif self.lineEdit_13.text() == "" or self.lineEdit_12.text() == "":
            legal = 0
            QMessageBox.warning(self,"提示","用户名或密码不能为空")
        else:
            legal = 0
            QMessageBox.warning(self,"提示","两次密码输入不一致")
        # print(legal)
        if legal == 1:
            repeat = 0 #用户名重复
            for i in range(len(self.noruser_sql_data)):
                if self.lineEdit_12.text() == str(self.noruser_sql_data[i][2]):
                    repeat = 1
                    QMessageBox.warning(self,"提示","用户名已经存在")
            if repeat == 0:
                sql = "INSERT INTO NorUser (Name, userpass) VALUES('%s','%s')" % (str(self.lineEdit_12.text()),str(self.lineEdit_13.text()))
                # print(sql)
                self.noruser_cur.execute(sql)
                db.commit()
                QMessageBox.information(self,"成功","注册成功",QMessageBox.Yes)
                self.stackedWidget.setCurrentIndex(0)
                self.noruser_cur.execute("SELECT * FROM NorUser")
                self.noruser_sql_data = self.noruser_cur.fetchall()

    def BacktoIndex(self):
        self.stackedWidget.setCurrentIndex(0)
        self.lineEdit_12.setText("")
        self.lineEdit_13.setText("")
        self.lineEdit_14.setText("")
    def interface2(self, Item=None):

        row_2 = self.tableWidget_2.currentRow()  #当前行
        self.ID_stand = row_2
        try:
            value_lst1 = [self.tableWidget_2.item(row_2, 2).text(),self.tableWidget_2.item(row_2, 1).text(),
            self.tableWidget_2.item(row_2, 4).text(), self.tableWidget_2.item(row_2, 3).text()] #图像编号,种类,地点,时间
            self.signB.emit(value_lst1)
            A1.signA.connect(self.A1reaction) #传输数据
            A1.show()
        except Exception as e:
            print(e)
        
    def A1reaction(self, k):  #时间,品种,地址
        # self.tableWidget_2.setItem(self.ID_stand, 5, QTableWidgetItem(str(k[0])))
        # self.tableWidget_2.setItem(self.ID_stand, 3, QTableWidgetItem(str(k[1])))
        self.tableWidget_2.setItem(self.ID_stand, 4, QTableWidgetItem(str(k[2])))
        # self.tableWidget_2.item(self.ID_stand, 5).setTextAlignment(Qt.AlignCenter)
        # self.tableWidget_2.item(self.ID_stand, 3).setTextAlignment(Qt.AlignCenter)
        self.tableWidget_2.item(self.ID_stand, 4).setTextAlignment(Qt.AlignCenter)
        row = self.tableWidget_2.currentRow()  #当前行
        sql = "UPDATE PLInfo SET PLAddr='%s' WHERE ID=%d;" % (str(k[2]),int(k[1]))
        # print(sql)
        self.noruser_cur.execute(sql)
        # self.plinfo_cur.execute("REPLACE INTO PLinfo VALUES (%s,%s,%s,%s,%s)",value_lst) #插入语句(插入到数据库中)
        db.commit()
        QMessageBox.information(self, "成功", "提交成功", QMessageBox.Yes)
        A1.close()
        A1.signA.disconnect()

        

        

    def choose1(self):
        if self.checkBox.isChecked():
            for i in range(self.tableWidget.rowCount()):
                item = QtWidgets.QTableWidgetItem()
                item.setCheckState(QtCore.Qt.Checked)
                item.setData(1, item.checkState())
                self.tableWidget.setItem(i, 0, item)
        else:
            for i in range(self.tableWidget.rowCount()):
                item = QtWidgets.QTableWidgetItem()
                item.setCheckState(QtCore.Qt.Unchecked)
                item.setData(1, item.checkState())
                self.tableWidget.setItem(i, 0, item)
                
    def choose2(self):
        if self.checkBox_2.isChecked():
            for i in range(self.tableWidget_2.rowCount()):
                item = QtWidgets.QTableWidgetItem()
                item.setCheckState(QtCore.Qt.Checked)
                item.setData(1, item.checkState())
                self.tableWidget_2.setItem(i, 0, item)
        else:
            for i in range(self.tableWidget_2.rowCount()):
                item = QtWidgets.QTableWidgetItem()
                item.setCheckState(QtCore.Qt.Unchecked)
                item.setData(1, item.checkState())
                self.tableWidget_2.setItem(i, 0, item)

                
    def check2(self):
        print(self.plinfo_sql_data)
        Start = self.lineEdit_5.text()+self.comboBox_5.currentText()+self.comboBox_5.currentText()
        End = self.lineEdit_7.text()+self.comboBox_7.currentText()+self.comboBox_8.currentText()
        Start_time = int(Start)
        End_time = int(End)
        self.tableWidget_2.setRowCount(0)  
        self.plinfo_cur.execute("SELECT * FROM PLInfo")
        self.plinfo_sql_data = self.plinfo_cur.fetchall()
        M = ''.join(self.plinfo_sql_data[0][2].split('-'))
        for i in range(len(self.plinfo_sql_data)):
            if int(M) < End_time and int(M) > Start_time:
                row = self.tableWidget_2.rowCount()        #获取行数
                self.tableWidget_2.insertRow(row)        #在末尾插入一空行
                item = QtWidgets.QTableWidgetItem()
                item.setCheckState(QtCore.Qt.Unchecked)
                item.setData(1, item.checkState())
                self.tableWidget_2.setItem(i, 0, item)
                for j in range(len(self.plinfo_col_lst)-1):
                    self.tableWidget_2.setItem(i, j+1, QTableWidgetItem(str(self.plinfo_sql_data[i][j])))
                    self.tableWidget_2.item(i, j+1).setTextAlignment(Qt.AlignCenter) 
                    
    def check(self):
        Start = self.lineEdit_3.text()+self.comboBox.currentText()+self.comboBox_2.currentText()
        End = self.lineEdit_4.text()+self.comboBox_4.currentText()+self.comboBox_3.currentText()
        Start_time = int(Start)
        End_time = int(End)
        self.tableWidget.setRowCount(0)  
        
        self.picinfo_cur.execute("SELECT * FROM BlockData")
        self.picinfo_sql_data = self.picinfo_cur.fetchall()
        print(self.picinfo_sql_data)
        M = ''.join(self.picinfo_sql_data[0][14].split('-'))
        for i in range(len(self.picinfo_sql_data)):
            if int(M) < End_time and int(M) > Start_time:
                row = self.tableWidget.rowCount()        #获取行数
                self.tableWidget.insertRow(row)        #在末尾插入一空行
                item = QtWidgets.QTableWidgetItem()
                item.setCheckState(QtCore.Qt.Unchecked)
                item.setData(1, item.checkState())
                self.tableWidget.setItem(i, 0, item)
                for j in range(len(self.picinfo_col_lst)-1):
                    self.tableWidget.setItem(i, j+1, QTableWidgetItem(str(self.picinfo_sql_data[i][j])))
                    self.tableWidget.item(i, j+1).setTextAlignment(Qt.AlignCenter) 
        
    def delete1(self):
        Num  = self.tableWidget.rowCount()
        for i in range(Num):
            try:
                if self.tableWidget.item(Num-1-i,0).checkState() == 2:
                    del_d = self.tableWidget.item(Num-1-i, 1).text()
                    # del_d1 = del_d.strip()
                    print(del_d)
                    sql = "DELETE FROM BlockData WHERE 序号 = '%s'" % del_d
                    print(sql)
                    self.picinfo_cur.execute(sql)
                    db.commit()
                    
                    
#                    del_d_2 = self.tableWidget_2.item(Num-1-i, 5).text()
                    self.tableWidget.removeRow(Num-1-i)#删除表格
            except:
                pass
        
        
    def delete2(self):
        Num  = self.tableWidget_2.rowCount()
        for i in range(self.tableWidget_2.rowCount()):
            try:
                if self.tableWidget_2.item(Num-1-i,0).checkState() == 2:
                    del_d = self.tableWidget_2.item(Num-1-i, 1).text()
                    # print(del_d)
                    sql ="DELETE FROM PLInfo WHERE ID = '" + del_d + "'"
                    print(sql)
                    self.plinfo_cur.execute(sql)
                    db.commit()
                    self.tableWidget_2.removeRow(Num-1-i)#删除表格
            except:
                pass
        
    def shangchuan(self):
       # try:
#         print(self.lineEdit_8.text(), len(self.fileName), len(self.PLACE))
        if int(self.lineEdit_8.text()) == len(self.fileName) and int(self.lineEdit_8.text()) == len(self.PLACE):
            dst_dir = self.ADDR # 目标路径记得加斜杠   another/
            for i in range(len(self.fileName)):
                self.mycopyfile(self.fileName[i], dst_dir, self.PLACE[i])
                
        else:
            self.reply = QMessageBox.question(self, "提示", "图片数量不符", QMessageBox.Yes | QMessageBox.No ,  QMessageBox.Yes ) 
       # except pyodbc.Error as e:
       #     print(e)
            
            
    def choose(self):
        try:
            fileName, filetype = QFileDialog.getOpenFileNames(self, "选择文件", "/", "Text Files (*.jpg);;Files (*.gif)")
            self.fileName = fileName
            dizhi = fileName[0]
            for i in range(len(fileName)-1):
                dizhi = dizhi + ';'+ fileName[i+1]
            self.lineEdit_9.setText(dizhi)
            self.Time = self.lineEdit_10.text()  #时间
            self.PLACE = self.textEdit.toPlainText().split(',')  #地址
            
        except:
            pass
    
    def re_(self):
        self.lineEdit_8.setText('')
        self.lineEdit_9.setText('')
        self.textEdit.setText('')
        self.lineEdit_10.setText('')

    def myfunc(self):
        start()
    
    def mycopyfile(self, srcfile,dstpath, dizhi):                       # 复制函数
        fname = str(srcfile).split('/')[-1]
        # print(dstpath + fname)
        file_path=os.path.join(dstpath ,  fname)
        srcfile=os.path.join(srcfile)
        shutil.copy(srcfile, file_path)          # 复制文件

        
        row = self.tableWidget_2.rowCount()        #获取行数
        self.tableWidget_2.insertRow(row)        #在末尾插入一空行
        print(row)
        item = QtWidgets.QTableWidgetItem()
        item.setCheckState(QtCore.Qt.Unchecked)
        item.setData(1, item.checkState())
        self.tableWidget_2.setItem(row, 0, item)
        #        A = function()    #返回品种信息
        A = 1
        self.tableWidget_2.setItem(row, 1, QTableWidgetItem(str(row)))   #序号
        self.tableWidget_2.item(row, 1).setTextAlignment(Qt.AlignCenter) 
        self.tableWidget_2.setItem(row, 2, QTableWidgetItem(str(fname)))    #图像编号
        self.tableWidget_2.item(row, 2).setTextAlignment(Qt.AlignCenter) 
        self.tableWidget_2.setItem(row, 3, QTableWidgetItem(str(A)))   #种类
        self.tableWidget_2.item(row, 3).setTextAlignment(Qt.AlignCenter) 
        self.tableWidget_2.setItem(row, 4, QTableWidgetItem(str(dizhi)))    #地址
        self.tableWidget_2.item(row, 4).setTextAlignment(Qt.AlignCenter) 
        start_date = datetime.datetime.strptime(str(self.Time), "%Y-%m-%d")  
        self.tableWidget_2.setItem(row, 5, QTableWidgetItem(str(self.Time)))    #时间
        # self.tableWidget_2.item(row, 5).setTextAlignment(Qt.AlignCenter)
        
        value_lst = [str(row+1), str(fname), str(A), str(dizhi), start_date]
        sql = "INSERT INTO PLInfo (ID,Variety,PLDate,PLAddr) VALUES('%s','%s','%s','%s')" % (str(row+1),str(fname), str(start_date),str(dizhi))
        print(sql)
        sql2 = "SET IDENTITY_INSERT PLInfo ON"
        self.noruser_cur.execute(sql2)
        self.noruser_cur.execute(sql)
        # self.plinfo_cur.execute("INSERT INTO PLInfo (ID,Variety,PLDate,PLAddr) VALUES (%s,%s,%s,%s,%s)',value_lst) #插入语句(插入到数据库中)
        # sql = "INSERT INTO NorUser (Name, userpass) VALUES('%s','%s')" % (str(self.lineEdit_12.text()), str(self.lineEdit_13.text()))
        db.commit()
        #        A = function()    #第二个函数,返回其他信息
        
        # pic_num = fname  #图像编号
        # hang = 1 #行号
        # lie = 1  #列号
        # miao = 1 #苗数
        # chuya = 1 #出芽率
        # pingjun = 1 #平均株距
        # zhucha = 1 #株距方差
        # fangcha = 1 #平均方差
        # mianji = 1 #平均面积
        # zhanbi = 1 #面积占比
        # yechang = 1 #平均叶长
        # yecha = 1 #叶长方差
        # midu = 1  #种植密度
        # shijian = start_date   #处理时间
        # value_lst2 = [str(row+1), str(pic_num), str(hang), str(lie), str(miao), str(chuya), str(pingjun),str(zhucha),
        #             str(fangcha), str(mianji), str(zhanbi), str(yechang), str(yecha), str(midu), str(shijian)]
        # self.picinfo_cur.execute("REPLACE INTO picinfo VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)",value_lst2) #插入语句(插入到数据库中)
        db.commit()
#############################################################

class A1(QMainWindow, Ui_MainWindow1):   #数据操作窗口   
    signA = pyqtSignal(list)
    def __init__(self, parent = None):
        super(A1, self).__init__(parent)
        self.setupUi(self)
        self.ADDR = 'D:/桌面/mqms_yolov3 (2)/mqms_yolov3/result/Handled/'
        Main.signB.connect(self.B1reaction) #传输数据
        self.pushButton.clicked.connect(self.xiugai)
        self.pushButton_2.clicked.connect(self.clear)
        

    def xiugai(self):
        value_lst1 = [self.label_4.text(),  self.lineEdit_2.text(), self.textEdit.toPlainText()]  #时间,品种,地址
        self.signA.emit(value_lst1)
        
    def clear(self):
        self.lineEdit.setText('')
        self.lineEdit_2.setText('')
        self.textEdit.setText('')
        self.lineEdit_3.setText('')
        
    def B1reaction(self, kk):  #图像编号,种类,地点,时间
        self.label_4.setText(kk[3])
        self.lineEdit_2.setText(kk[1])
        self.textEdit.setPlainText(kk[2])
        foldername = kk[0].split('.')[0]
        road =  self.ADDR + foldername +'/'+'res.jpg'
        pixmap = QPixmap(road).scaled(800, 500)
        self.label_2.setPixmap(pixmap)

if __name__ == "__main__":
    app = QApplication(sys.argv)
    Main = Main()
    A1 = A1()
    Main.show()
    sys.exit(app.exec())



  • 写回答

4条回答 默认 最新

  • 专家-皆知 2024-05-08 16:02
    关注

    引自免费微信小程序:皆我百晓生

    你可以通过引入子进程管理模块如multiprocessing,在主进程中启动一个子进程执行start函数,然后在检查状态时使用subprocessterminate()kill()方法来强制关闭子进程。

    评论

报告相同问题?

问题事件

  • 创建了问题 5月8日