鱼C论坛

 找回密码
 立即注册
查看: 844|回复: 2

pyqt点击发送按钮程序自动终止

[复制链接]
发表于 2023-7-28 10:44:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
import sys
import PyQt5.QtCore  as 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_())
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-7-28 10:44:41 | 显示全部楼层
根据提供的代码,似乎没有明显的错误导致程序自动终止。要找出问题,我们可以采取以下步骤:

1. 确认程序崩溃:
   首先,请确保程序真的崩溃了。当程序崩溃时,它通常会输出一些错误信息或调用栈跟踪。请在运行程序时检查控制台输出,看看是否有任何异常信息。

2. 使用try-except捕获异常:
   如果程序确实崩溃了但没有明显的错误信息,请在代码的主体部分(main函数)的最外层添加一个try-except块,以捕获任何可能抛出的异常,并打印异常信息。这样做可以帮助我们找出问题所在。

3. 调试工具:
   如果上述步骤都没有找到问题,可以考虑使用调试工具来逐步执行代码并观察变量值。Python自带了pdb调试器,可以通过在代码中插入 import pdb; pdb.set_trace() 语句来启用。然后运行程序,当执行到这个语句时,程序会暂停,并允许你一步一步地执行代码并检查变量的值。

请尝试以上步骤,并提供更多信息,例如控制台输出或异常信息,以便更好地帮助您解决问题。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-28 10:45:03 | 显示全部楼层
根据您提供的代码,点击发送按钮后程序自动终止可能有以下几个原因:

1. 异常导致程序崩溃:在您的代码中,并没有明显的错误或异常处理机制。如果在btn_send_cb方法中发生异常,程序可能会崩溃并终止执行。建议您在代码中添加异常处理语句,以便捕获并处理潜在的异常。

2. 循环引用导致内存泄漏:在某些场景下,循环引用可能导致内存无法正确释放,最终导致程序崩溃。请确保您的代码中没有明显的循环引用,尤其是在涉及到窗口对象和其他对象之间的引用关系时。

3. PyQt信号与槽连接错误:在您的代码中,信号与槽的连接是通过clicked.connect等方法实现的。如果信号与槽连接错误,可能导致程序在点击发送按钮时无法正常执行相应的槽函数,从而导致程序终止。请确保信号与槽的连接正确并且符合预期。

综上所述,请检查您的代码中是否存在以上问题,并进行相应的修复和调试。如果问题仍然存在,请提供更多详细的错误信息或日志,以便我能够给出更精确的解决方案。
如果问题已经解决,请设置最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-22 07:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表