pyqt点击发送按钮程序自动终止
import sysimport PyQt5.QtCoreas qc
import PyQt5.QtWidgets as qw
from test import Ui_MainWindow
from PyQt5.QtWidgets import QMainWindow, QApplication
from tool import Tool
class MyWindow(QMainWindow, Ui_MainWindow):
def __init__(self):
super(MyWindow, self).__init__()
self.setupUi(self)
# 初始化窗口
self.statusbar.showMessage("status:ok")
#加载配置文件
self.settings = qc.QSettings("config.ini", qc.QSettings.IniFormat)
self.settings.setIniCodec("UTF-8")
self.config_uart_baud = self.settings.value("SETUP/UART_BAUD", 0, type=int)
print("uart baud(int) is %d" % self.config_uart_baud)
self.uart_port = "COM1"
# 初始化界面
self.radioButton_recv_ascii.setChecked(True)
self.radioButton_send_ascii.setChecked(True)
self.spinBox.setRange(100, 30 * 1000)
self.spinBox.setSingleStep(100)
self.spinBox.setWrapping(True)
self.spinBox.setValue(1000)
self.comboBox_bote.setCurrentText(str(self.config_uart_baud))
# 绑定信号与槽
self.comboBox_bote.currentIndexChanged.connect(self.comboBox_bote_cb)
self.btn_send.clicked.connect(self.btn_send_cb)
self.action_start.triggered.connect(self.action_start_cb)
self.action_pause.triggered.connect(self.action_pause_cb)
self.action_stop.triggered.connect(self.action_stop_cb)
self.action_clean.triggered.connect(self.action_clean_cb)
self.radioButton_recv_ascii.toggled.connect(self.radioButton_recv_ascii_cb)
self.radioButton_send_ascii.toggled.connect(self.radioButton_send_ascii_cb)
self.radioButton_recv_hex.toggled.connect(self.radioButton_recv_hex_cb)
self.radioButton_send_hex.toggled.connect(self.radioButton_send_hex_cb)
self.checkBox_zidonghuanhang.toggled.connect(self.checkBox_zidonghuanhang_cb)
self.checkBox_xianshifasong.toggled.connect(self.checkBox_xianshifasong_cb)
self.checkBox_xianshishijian.toggled.connect(self.checkBox_xianshishijian_cb)
self.checkBox_chongfufasong.toggled.connect(self.checkBox_chongfufasong_cb)
self.spinBox.valueChanged.connect(self.spinBox_cb)
#实例化Tool
self.tool = Tool(self)
def comboBox_bote_cb(self):
content = self.comboBox_bote.currentText()
print("combox's value is", content)
text = "您当前选中了%s" % content
qw.QMessageBox.information(self, "提示", text, qw.QMessageBox.Ok | qw.QMessageBox.Cancel)
def btn_send_cb(self):
print("you clicked btn_send.")
send_data = self.textEdit_get.toPlainText()
self.tool.uart.send_uart_data(send_data)
def action_start_cb(self):
print("you clicked action_start")
def action_pause_cb(self):
print("you clicked action_pause")
def action_stop_cb(self):
print("you clicked action_stop")
def action_clean_cb(self):
print("you clicked action_clean")
def radioButton_recv_ascii_cb(self):
print("you selected radioButton_recv_ascii")
def radioButton_send_ascii_cb(self):
print("you selected radioButton_send_ascii")
def radioButton_recv_hex_cb(self):
print("you selected radioButton_recv_hex")
def radioButton_send_hex_cb(self):
print("you selected radioButton_send_hex")
def checkBox_zidonghuanhang_cb(self):
print("you selected checkBox_auto_line")
res_auto_line = self.checkBox_zidonghuanhang.isChecked()
print("res_auto_line is ", res_auto_line)
res_show_send = self.checkBox_xianshifasong.isChecked()
print("res_show_send is ", res_show_send)
res_show_time = self.checkBox_xianshishijian.isChecked()
print("res_show_time is ", res_show_time)
res_repeat_send = self.checkBox_chongfufasong.isChecked()
print("res_repeat_send is ", res_repeat_send)
def checkBox_xianshifasong_cb(self):
print("you selected checkBox_show_send")
def checkBox_xianshishijian_cb(self):
print("you selected checkBox_show_time")
def checkBox_chongfufasong_cb(self):
print("you selected checkBox_repeat_send")
def spinBox_cb(self):
value = self.spinBox.value()
print("spinBox's current value is ", value)
if __name__ == '__main__':
app = QApplication(sys.argv)
myWin = MyWindow()
myWin.show()
sys.exit(app.exec_()) 根据提供的代码,似乎没有明显的错误导致程序自动终止。要找出问题,我们可以采取以下步骤:
1. 确认程序崩溃:
首先,请确保程序真的崩溃了。当程序崩溃时,它通常会输出一些错误信息或调用栈跟踪。请在运行程序时检查控制台输出,看看是否有任何异常信息。
2. 使用try-except捕获异常:
如果程序确实崩溃了但没有明显的错误信息,请在代码的主体部分(main函数)的最外层添加一个try-except块,以捕获任何可能抛出的异常,并打印异常信息。这样做可以帮助我们找出问题所在。
3. 调试工具:
如果上述步骤都没有找到问题,可以考虑使用调试工具来逐步执行代码并观察变量值。Python自带了pdb调试器,可以通过在代码中插入 import pdb; pdb.set_trace() 语句来启用。然后运行程序,当执行到这个语句时,程序会暂停,并允许你一步一步地执行代码并检查变量的值。
请尝试以上步骤,并提供更多信息,例如控制台输出或异常信息,以便更好地帮助您解决问题。 根据您提供的代码,点击发送按钮后程序自动终止可能有以下几个原因:
1. 异常导致程序崩溃:在您的代码中,并没有明显的错误或异常处理机制。如果在btn_send_cb方法中发生异常,程序可能会崩溃并终止执行。建议您在代码中添加异常处理语句,以便捕获并处理潜在的异常。
2. 循环引用导致内存泄漏:在某些场景下,循环引用可能导致内存无法正确释放,最终导致程序崩溃。请确保您的代码中没有明显的循环引用,尤其是在涉及到窗口对象和其他对象之间的引用关系时。
3. PyQt信号与槽连接错误:在您的代码中,信号与槽的连接是通过clicked.connect等方法实现的。如果信号与槽连接错误,可能导致程序在点击发送按钮时无法正常执行相应的槽函数,从而导致程序终止。请确保信号与槽的连接正确并且符合预期。
综上所述,请检查您的代码中是否存在以上问题,并进行相应的修复和调试。如果问题仍然存在,请提供更多详细的错误信息或日志,以便我能够给出更精确的解决方案。
如果问题已经解决,请设置最佳答案
页:
[1]