按钮绑定了这个函数,一点击就关闭,不知道为何
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QDialog;
import time
import ceshi009
from PyQt5.QtWidgets import QApplication, QMainWindow
if __name__ == '__main__':
app = QApplication(sys.argv)
MainWindow = QDialog()
ui = ceshi009.Ui_Dialog()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
def text():
ui = ceshi009.Ui_Dialog()
ui.textEdit.print("23423")
print(2323)
您需要将text()函数与按钮的信号clicked.connect()连接。同时,由于这个函数依赖于ui对象(即用户界面),您需要将其定义在创建和显示MainWindow之前。
下面是修改后的示例:
import sys
from PyQt5.QtWidgets import QDialog, QApplication
import ceshi009
def text():
ui.textEdit.print("23423")
print(2323)
if __name__ == '__main__':
app = QApplication(sys.argv)
MainWindow = QDialog()
ui = ceshi009.Ui_Dialog()
ui.setupUi(MainWindow)
# 将按钮的槽函数连接到text()函数
ui.pushButton.clicked.connect(text)
MainWindow.show()
sys.exit(app.exec_())
请注意,ui变量是在创建窗口MainWindow之前定义的,因为它必须在该窗口中使用。而且,我们还将按钮的槽函数text()连接到按钮的clicked信号,以达到按按钮时执行text()函数的目的。
不知道你这个问题是否已经解决, 如果还没有解决的话:为了代码能跨平台运行,在需要使用路径的地方,特别是引用文件的时候,最好用绝对路径,而不要用相对路径。因为不同的启动项目的方式,找寻文件时的起始目录不同,可能导致找不到要加载的文件。
参考链接1是python导包失败的讲解,和这个问题类似,都是找不到要加载的文件,注意P1、P2都要看。python几种获取路径的方式的比较:参考链接2,参考链接3。
问题解决方案:
根据参考资料给出的代码,我们可以看到在按钮绑定的处理函数get_rank()中,每次点击按钮时都会调用其他函数进行排名计算和消息框输出。但是在排名计算函数和消息框输出函数中是否有对于GUI的关闭操作呢?
我们需要检查一下这些函数中是否有对GUI的关闭操作,如果有的话需要修改。如果没有,则需要检查其他部分的代码,查找是否有其他地方对GUI进行了关闭操作。
如果发现没有显式的关闭GUI的代码,可能是某些异常情况导致GUI关闭,需要进一步排查异常情况的出现原因。
具体修改方式如下:
检查排名计算函数get_rank1(),确保其中没有关闭GUI的操作。可以在函数结尾处加入一行代码self.master.mainloop()
,让GUI保持运行状态。
检查消息框输出函数,在函数结尾处添加代码self.master.mainloop()
,保持GUI的运行状态。
检查异常情况是否导致GUI关闭,可以在程序中添加异常处理代码,以捕获异常并处理。例如:
python try: # 程序代码 except Exception as e: messagebox.showerror('错误', e) # 添加其他处理代码,例如打印异常信息等
通过以上修改和处理,可以避免在按钮点击时关闭GUI的问题。