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

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 CreateBitmapFromWicBitmap内存释放问题。
  • ¥30 win c++ socket
  • ¥15 CanMv K210开发板实现功能
  • ¥15 C# datagridview 栏位进度
  • ¥15 vue3页面el-table页面数据过多
  • ¥100 vue3中融入gRPC-web
  • ¥15 kali环境运行volatility分析android内存文件,缺profile
  • ¥15 写uniapp时遇到的问题
  • ¥15 vs 2008 安装遇到问题
  • ¥15 matlab有限元法求解梁带有若干弹簧质量系统的固有频率