调用另一个函数时如何停止特定的函数?

时间:2019-04-29 13:11:15

标签: python python-3.x multithreading timer pyqt

如果我单击pushButton_1,它将正确显示,然后单击pushButton_2。 这两个功能同时运行并且相互重叠。

  

self.pushButton_1.clicked.connect(self.fun)

def fun(self):
    print("1...")
    #for grabbing live data from excelsheet
    timer = threading.Timer(5.0, self.fun)
    timer.start()

     #reading from sheet1; ignore sheet_name=2        
    ex_data = pd.read_excel('bank2.xlsm',sheet_name=2,skiprows=5, nrows=18, 
                             usecols = 'D:V')
    df = pd.DataFrame(ex_data)
    df = df.replace(np.nan, '', regex=True)
    self.tableWidget.setColumnCount(len(df.columns))
    self.tableWidget.setRowCount(len(df.index))


    for i in range(len(df.index)):
        for j in range(len(df.columns)):
            self.tableWidget.setItem(i,j,QTableWidgetItem(str(df.iloc[i, 
                                      j])))
            self.tableWidget.resizeColumnsToContents()
            self.retranslateUi(MainWindow)
            QtCore.QMetaObject.connectSlotsByName(MainWindow)
  

self.pushButton_2.clicked.connect(self.fun2)

def fun2(self):
    print("2...")
    timer = threading.Timer(5.0, self.fun2)
    timer.start()
    ex_data = pd.read_excel('bank2.xlsm',sheet_name=3,skiprows=5, nrows=18, 
                             usecols = 'D:V')
    df = pd.DataFrame(ex_data)
    df = df.replace(np.nan, '', regex=True)

    self.tableWidget.setColumnCount(len(df.columns))
    self.tableWidget.setRowCount(len(df.index))
    for i in range(len(df.index)):
        for j in range(len(df.columns)):
            self.tableWidget.setItem(i,j,QTableWidgetItem(str(df.iloc[i, 
                                      j])))
            self.tableWidget.resizeColumnsToContents()
            self.retranslateUi(MainWindow)
            QtCore.QMetaObject.connectSlotsByName(MainWindow)

因此,我正在PyQt5项目中工作,当按下pushButton_1时,它应该显示来自excel文件的实时数据,为此我必须实施Timer进行实时更新。 第二个按钮相同。 每当调用fun时,我都希望fun2停止执行。反之亦然

0 个答案:

没有答案