Py 文件双击运行闪退, IDLE 运行正常 (绝对不是没加 input 的问题)

Py文件双击运行闪退, IDLE运行正常(绝对不是没加input的问题)
运行正常

Py文件双击运行闪退, IDLE运行正常(绝对不是没加input的问题)
无报错

Py文件双击运行闪退, IDLE运行正常(绝对不是没加input的问题)

但双击py文件弹出框后闪退,求解?

Jason990420
最佳答案

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

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

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

4年前 评论
讨论数量: 3
Jason990420

闪退有五种可能

  • py 文件的默认开启程序不对, 不能开启py檔.
  • 默认开启程序执行出错执行出错
  • .py执行出错
  • 内存不足或错误
  • 硬盘有问题

你的 console 上面显示的是C:\windows\py.exe
一般是 C:\Users\xxxxxxx\AppData\Local\Programs\Python\Launcher\py.exe
也许是因为你有装了其他旧版本的python, 造成执行错误.
重设一下你的档案开启设定
python档案右键 内容 开启档案 变更 找到你的python.exe

4年前 评论
The_kiss_of_dragon (楼主) 4年前
Jason990420 (作者) 4年前
The_kiss_of_dragon (楼主) 4年前
Jason990420 (作者) 4年前
Jason990420 (作者) 4年前
The_kiss_of_dragon (楼主) 4年前
The_kiss_of_dragon (楼主) 4年前
The_kiss_of_dragon (楼主) 4年前
Jason990420 (作者) 4年前
The_kiss_of_dragon (楼主) 4年前

from PySide2.QtWidgets import QApplication,QMainWindow,QPushButton,QPlainTextEdit,QMessageBox from PySide2.QtUiTools import QUiLoader from PySide2.QtCore import QFile Rmdiction1 = {'a':'01','b':'02','c':'03','d':'04','e':'05','f':'10','g':'11','h':'12','i':'13','j':'14','k':'15','l':'20','m':'21','n':'22','o':'23','p':'24','q':'25','r':'30','s':'31','t':'32','u':'33','v':'34','w':'35','x':'40','y':'41','z':'42',' ':'43',',':'44','.':'45',':':'50',';':'51','<':'52','>':'53','?':'54','/':'55','[':'0001',']':'0010','{':'0100','}':'1000','-':'0011','':'0111','~':'1111','!':'0101','@':'0110','#':'1001','$':'1011','%':'1010','^':'1100','&':'1101','*':'1111','(':'60',')':'61','=':'62','+':'63','|':'64','`':'65','0':'70','1':'71','2':'72','3':'73','4':'74','5':'75','6':'80','7':'81','8':'82','9':'83','\':'84',''':'85','"':'90'} Rmdiction = {value:key for key,value in Rmdiction1.items()} def decode(x): for i in Rmdiction: if i == x: print(Rmdiction[i]) return Rmdiction[i] def encode(x1): for i1 in Rmdiction1: if i1 == x1: print(Rmdiction1[i1]) return Rmdiction1[i1] class Codec: def _init(self):

      # 从文件中加载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 = '''**********使用说明**********

此程序可以将英文进行编码操作,对R码数字进行解码操作。 本程序不支持不使用英文字母的语言,请确保文件的内容正确。 以及关于文件的路径问题: 例如Jenny想要进行编码或解码的文件在桌面上, 而且她使用的是widowsXP系统,那么如果文件的名字为01.txt的话, 01.txt的路径就为C:\Documents and Settings\Administrator\桌面\01.txt (特别提醒:目前只支持txt文件,即记事本文件)''' QMessageBox.about(self.ui,'使用说明',version) def PUSH_BUTTON3(self): instructions = '''

R编解码版本:1.2 修改时间:2020.2.25 19:44:31.69 相比1.1版本,此次更新修复、添加了 1.增强了图形用户界面 2.删除了编解码时会逐一打印的值对的功能 3.修复了编解码时文件里字符串空行造成编解码操作出错的情况''' QMessageBox.about(self.ui,'版本介绍',instructions)

app = QApplication([]) codec =Codec() codec.ui.show()

4年前 评论
Jason990420

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

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

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

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!