python - 调用另一个函数时如何停止特定函数?
问题描述
如果我点击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
被调用。反之亦然