注册
登录
查看:561 | 回复:7
kiss
Py文件双击运行闪退, IDLE运行正常,大佬救命
发表于 2023/6/13 13:44:32
楼主

image.png

kiss
发表于 2023/6/13 13:47:06
沙发

image.png

Jason
发表于 2023/6/13 13:48:32
板凳

闪退有五种可能

py 文件的默认开启程序不对,不能开启 py

默认开启程序执行出错执行出错

.py 执行出错

内存不足或错误

硬盘有问题

你的 console 上面显示的是 C:\windows\py.exe


一般是 C:\Users\xxxxxxx\AppData\Local\Programs\Python\Launcher\py.exe

也许是因为你有装了其他旧版本的 python, 造成执行错误.

重设一下你的档案开启设定

kiss
发表于 2023/6/13 13:51:50
4楼

但是我的另一个文件可以双击运行


Jason
发表于 2023/6/13 13:52:50
5楼

你能提供可运行, 但会闪退的主要可用的代码吗?

这样比较直接, 也容易找出问题。


kiss
发表于 2023/6/13 13:54:50
6楼
      # 从文件中加载UI定义
      qfile_stats = QFile(r C:\Users\Administrator\Desktop\jsr\程序及数据\ui文件\R编解码.ui )
      qfile_stats.open(QFile.ReadOnly)
      qfile_stats.close()
      # 从 UI 定义中动态 创建一个相应的窗口对象
      # 注意:里面的控件对象也成为窗口对象的属性了
      # 比如 self.ui.button , self.ui.textEdit
      self.ui = QUiLoader().load(qfile_stats)
      self.ui.button.clicked.connect(self.coding)
      self.ui.pushButton.clicked.connect(self.decoding)
      self.ui.pushButton_2.clicked.connect(self.PUSH_BUTTON2)
      self.ui.pushButton_3.clicked.connect(self.PUSH_BUTTON3)
 def coding(self):
      replied = self.ui.textedit.toPlainText()
      ip = self.ui.textedit1.toPlainText()
      message1 = open(replied, r )
      message2 = message1.read()
      i3 = 0
      receivelist1 = []
      Message = message2.lower()
      MESSAGE = Message.replace( \n ,  )
      while i3   len(MESSAGE):
            a1 = encode(MESSAGE[i3])
            receivelist1.append(a1)
            i3 += 1
            if i3 == len(MESSAGE):
                orderedlist =  \n .join(receivelist1)
                f = open(ip, w+ )
                f.writelines(orderedlist)
                f.close()
                QMessageBox.about(self.ui,  , 编码成功 )
 def decoding(self):
      replied = self.ui.textedit.toPlainText()
      ip = self.ui.textedit1.toPlainText()
      Filehandle = open(replied, r )
      n = Filehandle.read()
      Filehandle.close()
      v = n.split( \n )
      i2 = 0
      receivelist = []
      while i2   len(v):
          a = decode(v[i2])
          receivelist.append(a)
          i2 += 1
          if i2 == len(v):
                  orderedlist1 =   .join(receivelist)
                  f = open(ip, w+ )
                  f.writelines(orderedlist1)
                  f.close()
                  QMessageBox.about(self.ui,  , 解码成功 )
 def  PUSH_BUTTON2(self):
      version =    **********使用说明**********


Jason
最佳答案 发表于 2023/6/13 13:57:37
7楼

主要是你的代码用的是非阻塞窗口,

在 IDLE, 所有的变量,对象在执行完后,还会存在,不会主动清除 Python 的环境

在 CONSOLE/CMD 中,所有的变量,对象在执行完后,窗口会存在,但在 CONSOLE/CMD 会清除 Python 的环境,也会把窗口给关了,并不会保存 Python 的执行环境.

原来你少了最后一行 sys.exit (app.exec_()) 这样就 OK 了


kiss
发表于 2023/6/13 13:59:25
8楼

谢谢大佬

立即注册站大爷用户,免费试用全部产品
立即注册站大爷用户,免费试用全部产品