zgkjzf 2016-11-07 07:45 采纳率: 0%
浏览 3267

pyqt5的qmessagebox闪退求助

各位大神帮我看下是什么问题 造成只要输入不是数字 进入else语句的messagebox就闪退
若注视掉messagebox语句,下面的print能够执行

-*- coding: utf-8 -*-

Form implementation generated from reading ui file 'change.ui'

#

Created by: PyQt5 UI code generator 5.7

#

WARNING! All changes made in this file will be lost!

from PyQt5 import QtCore, QtGui, QtWidgets
#from PyQt5.QtWidgets import QMessageBox
import re

class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(800, 600)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)
self.lineEdit.setGeometry(QtCore.QRect(320, 140, 113, 20))
self.lineEdit.setMinimumSize(QtCore.QSize(113, 20))
self.lineEdit.setObjectName("lineEdit")
self.lineEdit_2 = QtWidgets.QLineEdit(self.centralwidget)
self.lineEdit_2.setGeometry(QtCore.QRect(320, 210, 113, 20))
self.lineEdit_2.setMinimumSize(QtCore.QSize(113, 20))
self.lineEdit_2.setObjectName("lineEdit_2")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 23))
self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)

    self.retranslateUi(MainWindow)
    self.lineEdit.editingFinished.connect(self.update)
    #self.lineEdit_2.connect(self.lineEdit, SIGNAL("editingFinished"), self.update)


    QtCore.QMetaObject.connectSlotsByName(MainWindow)

def retranslateUi(self, MainWindow):
    _translate = QtCore.QCoreApplication.translate
    MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))

def update(self):
    try:
        text=self.lineEdit.text()
        value=re.compile(r'[0-9]+\.+[0-9]+$')
        result=value.match(text)
        if result:

            intnum=text.rsplit(".")
            #print (intnum)
            othernum="0"+"."+intnum[1]
            #print (othernum)
            minnum=int(float(othernum)*60)
            #print (minnum)
            secnum=int(float(othernum)*3600-minnum*60)
            #print(secnum)
            self.lineEdit_2.setText(intnum[0]+"°"+str(minnum)+"′"+str(secnum)+"″")
        else:
            QtGui.QMessageBox.warning(self,"Warning","输入数据错误,请重新输入!",
                                      QMessageBox.OK,QMessageBox.OK)


            print("输入错误")
    except:
        print(sys.exc_info)
  • 写回答

1条回答 默认 最新

  • devmiao 2016-11-07 09:19
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 MATLAB yalmip 可转移负荷的简单建模出错,如何解决?
  • ¥15 数学的三元一次方程求解
  • ¥20 iqoo11 如何下载安装工程模式
  • ¥15 本题的答案是不是有问题
  • ¥15 关于#r语言#的问题:(svydesign)为什么在一个大的数据集中抽取了一个小数据集
  • ¥15 C++使用Gunplot
  • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?