pyqt5写的界面程序为什么会重复运行?找不到问题出在哪里

用pyqt5写的界面程序,程序中各个界面是用stackedwidget做的,用按键来实现跳转。在此贴其中一页的代码,本页想实现的是保存输入框中的文字,最终的结果是可以将文本保存到本地,但本页的程序会因为点了stackedwidget其他页面而重复运行,导致保存时的界面会不停跳出。

pyqt5写的界面程序为什么会重复运行?找不到问题出在哪里_第1张图片
再结合界面的图描述一下问题,进入这个界面后,可以点击上面的查询、追踪等按钮跳转stackedwidget其他的页,但是每次跳转都会增加输入文本后保存的次数,导致上图中那个文件保存多次弹出。(如下图所示,文本已经保存了,程序还在运行保存)

pyqt5写的界面程序为什么会重复运行?找不到问题出在哪里_第2张图片
问题大致描述详细了,下面贴上这一页的功能代码,我实在不知道错误的具体原因,希望大家不惜赐教!先提前感谢一下了!

#定义Ui_outinfo为室外信息界面
class Ui_outinfo(QtWidgets.QDialog,Ui_outDialog): 
    def __init__(self):
        super(Ui_outinfo,self).__init__()
        self.setupUi(self)
        #更改窗口名字
        self.setWindowTitle('大棚室外环境信息')
        #更改窗口图标
        self.setWindowIcon(QIcon('logo.ico'))
        #设置三个功能按钮事件
        self.outquerykey.clicked.connect(self.on_outquerykey_clicked)
        self.outmonitorkey.clicked.connect(self.on_outmonitorkey_clicked)
        self.outprogresskey.clicked.connect(self.on_outprogresskey_clicked)
        #设置返回首页键
        self.outreturnkey.clicked.connect(self.on_outreturnkey_clicked)
        #设置最大最小化关闭按钮
        self.setWindowFlags(QtCore.Qt.WindowMaximizeButtonHint|
                            QtCore.Qt.WindowMinimizeButtonHint|QtCore.Qt.WindowCloseButtonHint)
    #打开功能按钮
    def on_outquerykey_clicked(self):
        self.outinfobox.setCurrentIndex(0)
    def on_outmonitorkey_clicked(self):
        self.outinfobox.setCurrentIndex(1)
    def on_outprogresskey_clicked(self):
        self.outinfobox.setCurrentIndex(2)
        #设置保存键
        self.save.clicked.connect(self.on_save_clicked)
    #返回首页,关掉信息界面
    def on_outreturnkey_clicked(self):
        self.close()
    #保存文本
    def on_save_clicked(self):
        try:
            #在本地目录中保存自命名的txt文件
            path=QFileDialog.getSaveFileName(self,'文件保存','C:\\Users\\Minrui\\PycharmProjects\\untitled1\\first',
                                            '*.txt;;*All Files')
            #读取文本框中文本,转化为字符串格式
            text=str(self.usertext.toPlainText())
            #打开该txt文件并写入字符串
            with open(path[0],'w') as f:
                f.write(text)
            self.usertext.clear()
        except Exception as e:
           print(e)

你可能感兴趣的:(pyqt学习,pyqt,python,pycharm,windows)