免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 24678632 | 回复: 24678632

pyqt 弹出消息框 [复制链接]

论坛徽章:
0
发表于 2014-11-19 22:17 |显示全部楼层
目的是  点击 面板上的一个按钮,触发信号,弹出一个消息框,并获取返回值,打印label

下面是消息框的代码:

    def dd(self):
        qtm=QtGui.QMessageBox
        msg_box = qtm(qtm.Warning, u"警告", u"这是一个警告!",qtm.Yes| qtm.No, qtm.Yes)  ##这行最后一个参数为默认按钮,没有起作用
        msg_box.exec_()
        if msg_box == qtm.Yes:   
            self.label.setText("Question button/Ok")   
        elif msg_box == qtm.Cancel:   
            self.label.setText("Question button/Cancel")   
        else:   
            return

论坛徽章:
0
发表于 2014-11-20 11:34 |显示全部楼层
  1. #!/usr/bin/python
  2. # -*- coding: utf-8 -*-

  3. import sys
  4. from PyQt4 import QtGui


  5. class Example(QtGui.QWidget):
  6.    
  7.     def __init__(self):
  8.         super(Example, self).__init__()
  9.         
  10.         self.initUI()
  11.         
  12.     def initUI(self):               
  13.         self.lb=QtGui.QLabel(self)
  14.         self.lb.setText('......')
  15.         
  16.         self.setGeometry(300, 300, 250, 150)        
  17.         self.setWindowTitle('Message box')   
  18.         self.show()
  19.         
  20.     def closeEvent(self, event):
  21.         
  22.         reply = QtGui.QMessageBox.question(self, 'Message',
  23.             "Are you sure to quit?", QtGui.QMessageBox.Yes |
  24.             QtGui.QMessageBox.No, QtGui.QMessageBox.No)

  25.         if reply == QtGui.QMessageBox.Yes:
  26.             print 'yes'
  27.             event.accept()
  28.         else:
  29.             print 'no'
  30.             self.lb.setText('no')
  31.             event.ignore()        
  32.         
  33.         
  34. def main():
  35.    
  36.     app = QtGui.QApplication(sys.argv)
  37.     ex = Example()
  38.     sys.exit(app.exec_())


  39. if __name__ == '__main__':
  40.     main()
复制代码

论坛徽章:
0
发表于 2014-11-20 11:52 |显示全部楼层
能在我的代码 基础上改吗
from PyQt4 import QtCore, QtGui

#QtGui.QTextCodec.setCodecForTr(QTextCodec.codecForName("utf-8")
QtCore.QTextCodec.setCodecForTr(QtCore.QTextCodec.codecForName("utf-8")


try:
    _fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
    def _fromUtf8(s):
        return s

try:
    _encoding = QtGui.QApplication.UnicodeUTF8
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig)

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName(_fromUtf8("MainWindow")
        MainWindow.resize(800, 600)
        self.centralWidget = QtGui.QWidget(MainWindow)
        self.centralWidget.setObjectName(_fromUtf8("centralWidget")
        self.tableWidget = QtGui.QTableWidget(self.centralWidget)
        self.tableWidget.setGeometry(QtCore.QRect(140, 200, 256, 192))
        self.tableWidget.setObjectName(_fromUtf8("tableWidget")
        self.tableWidget.setColumnCount(2)
        self.tableWidget.setRowCount(2)
        item = QtGui.QTableWidgetItem()
        self.tableWidget.setVerticalHeaderItem(0, item)
        item = QtGui.QTableWidgetItem()
        self.tableWidget.setVerticalHeaderItem(1, item)
        item = QtGui.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(0, item)
        item = QtGui.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(1, item)
        self.textEdit = QtGui.QTextEdit(self.centralWidget)
        self.textEdit.setGeometry(QtCore.QRect(210, 40, 104, 64))
        self.textEdit.setObjectName(_fromUtf8("textEdit")
        self.textEdit_2 = QtGui.QTextEdit(self.centralWidget)
        self.textEdit_2.setGeometry(QtCore.QRect(210, 120, 104, 64))
        self.textEdit_2.setObjectName(_fromUtf8("textEdit_2")
        self.pushButton = QtGui.QPushButton(self.centralWidget)
        self.pushButton.setGeometry(QtCore.QRect(380, 130, 75, 23))
        self.pushButton.setObjectName(_fromUtf8("pushButton")
        MainWindow.setCentralWidget(self.centralWidget)
        self.menuBar = QtGui.QMenuBar(MainWindow)
        self.menuBar.setGeometry(QtCore.QRect(0, 0, 800, 1)
        self.menuBar.setObjectName(_fromUtf8("menuBar")
        self.menu123 = QtGui.QMenu(self.menuBar)
        self.menu123.setObjectName(_fromUtf8("menu123")
        MainWindow.setMenuBar(self.menuBar)
        self.toolBar = QtGui.QToolBar(MainWindow)
        self.toolBar.setObjectName(_fromUtf8("toolBar"))
        MainWindow.addToolBar(QtCore.Qt.TopToolBarArea, self.toolBar)
        self.action1 = QtGui.QAction(MainWindow)
        self.action1.setObjectName(_fromUtf8("action1"))
        self.action2 = QtGui.QAction(MainWindow)
        self.action2.setObjectName(_fromUtf8("action2"))
        self.menu123.addAction(self.action1)
        self.menu123.addAction(self.action2)
        self.menuBar.addAction(self.menu123.menuAction())
        self.toolBar.addSeparator()

        self.retranslateUi(MainWindow)
        QtCore.QObject.connect(self.tableWidget, QtCore.SIGNAL(_fromUtf8("cellChanged(int,int)")), self.tableWidget.clear)
        QtCore.QObject.connect(self.action1, QtCore.SIGNAL(_fromUtf8("triggered()")), self.tableWidget.clear)
        QtCore.QObject.connect(self.pushButton, QtCore.SIGNAL(_fromUtf8("clicked()")), self.Information)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
            
    def Information(self):  
        qtm=QtGui.QMessageBox
        msg_box = qtm(qtm.Warning, u"警告",u"这是一个警告!",qtm.Yes| qtm.No)
        msg_box.exec_()
        if msg_box == qtm.Yes:
            self.label.setText("Question button/Ok")
        elif msg_box == qtm.Cancel:
            self.label.setText("Question button/Cancel")
        else:
            return
            
    def retranslateUi(self, MainWindow):
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow", None))
        item = self.tableWidget.verticalHeaderItem(0)
        item.setText(_translate("MainWindow", "新建行", None))
        item = self.tableWidget.verticalHeaderItem(1)
        item.setText(_translate("MainWindow", "新建行", None))
        item = self.tableWidget.horizontalHeaderItem(0)
        item.setText(_translate("MainWindow", "新建列", None))
        item = self.tableWidget.horizontalHeaderItem(1)
        item.setText(_translate("MainWindow", "新建列", None))
        self.pushButton.setText(_translate("MainWindow", "ushButton", None))
        self.menu123.setTitle(_translate("MainWindow", "123", None))
        self.toolBar.setWindowTitle(_translate("MainWindow", "toolBar", None))
        self.action1.setText(_translate("MainWindow", "1", None))
        self.action1.setShortcut(_translate("MainWindow", "Ctrl+Q", None))
        self.action2.setText(_translate("MainWindow", "2", None))


if __name__ == "__main__":
    import sys
    app = QtGui.QApplication(sys.argv)
    MainWindow = QtGui.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())

论坛徽章:
0
发表于 2014-11-20 15:25 |显示全部楼层
就像我前面贴的那样不就可以了吗?
你又没有放置Cancel按钮怎么要判断Cancel按钮?
就两个按钮怎么if语句要有三个分支?

论坛徽章:
0
发表于 2014-11-20 20:08 |显示全部楼层
我是初学者,代码也是从网上找的,稍微改了改,IF 语句,判断现在不起作用。
def Information(self):  
        qtm=QtGui.QMessageBox
        msg_box = qtm(qtm.Warning, u"警告",u"这是一个警告!",qtm.Yes| qtm.No)
        msg_box.exec_()
        if msg_box == qtm.Yes:       ##点了YES,这里也不起作用
            self.label.setText("Question button/Ok")
        elif msg_box == qtm.Cancel:
            self.label.setText("Question button/Cancel")
        else:
            return

论坛徽章:
0
发表于 2014-11-20 20:50 |显示全部楼层
本帖最后由 whitelotus19 于 2014-11-21 12:07 编辑
  1. #!/usr/bin/python
  2. # -*- coding: utf-8 -*-

  3. import sys
  4. from PyQt4 import QtGui


  5. class Example(QtGui.QWidget):
  6.    
  7.     def __init__(self):
  8.         super(Example, self).__init__()
  9.         
  10.         self.initUI()
  11.         
  12.     def initUI(self):               
  13.         self.lb=QtGui.QLabel(self)
  14.         self.lb.setText('......')
  15.         
  16.         self.btn=QtGui.QPushButton('button',self)
  17.         self.btn.clicked.connect(self.btnclk)
  18.         
  19.         vbox = QtGui.QVBoxLayout()
  20.         vbox.addWidget(self.lb)
  21.         vbox.addWidget(self.btn)
  22.         
  23.         self.setLayout(vbox)
  24.         
  25.         self.setGeometry(300, 300, 250, 150)        
  26.         self.setWindowTitle('......')   
  27.         self.show()
  28.         
  29.     def btnclk(self):
  30.         reply = QtGui.QMessageBox.warning(self, u'警告',u'这是一个警告!', \
  31.             QtGui.QMessageBox.Yes | QtGui.QMessageBox.No, QtGui.QMessageBox.No)
  32.         if reply == QtGui.QMessageBox.Yes:
  33.             self.lb.setText('warning button/yes')
  34.         elif reply == QtGui.QMessageBox.No:
  35.             self.lb.setText('warning button/no')
  36.         else:
  37.             self.lb.setText('unknow?impossible!')
  38.         
  39.         
  40. def main():
  41.    
  42.     app = QtGui.QApplication(sys.argv)
  43.     ex = Example()
  44.     sys.exit(app.exec_())


  45. if __name__ == '__main__':
  46.     main()
  47.    
复制代码

论坛徽章:
0
发表于 2014-11-20 23:05 |显示全部楼层
直接用你的代码应该可以实现弹出消息框,在关闭对话框时弹出,但我的需求是在点击主窗口中的一个按钮时弹出消息框 并返回值,进行判断

论坛徽章:
0
发表于 2014-11-21 10:29 |显示全部楼层
回复 5# ws00310976
你上面那一大串代码貌似是ui.py的代码,那个不需要,直接import就行了。

   

论坛徽章:
0
发表于 2014-11-21 10:36 |显示全部楼层
回复 6# whitelotus19

你这代码写的有问题,运行过之后,不能关闭对话框啊
   

论坛徽章:
0
发表于 2014-11-21 10:41 |显示全部楼层
你值得返回值,是说要不要退出messagebox吗?如果是的,那代码很简单啊。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP