PyQT,QMessageBox 使用介绍
来源:互联网 发布:查询火车票的软件 编辑:程序博客网 时间:2024/06/05 23:47
QMessageBox是一个非常好用的通知交互界面,刚开始使用的时候,一些按键和操作不清楚,走了一些弯路,通过网上搜索以及自己试用,分享一些经验:
1:针对QMessage,默认的按键只有(PyQt4)OK键,这个按键,如何知道被点击了,并进行操作呢?
通过实验发现,OK键被点击信号就是:QMessage.buttonClicked 然后通过 QMessage.buttonClicked.connect(self.okDefaultButtonDeal) 即可,进行处理。
2:当然,也可以自己定义多个按键:代码如下:然后通过customMsgBox.clickedButton() 来链接区分,或者直接使用button.clicked.connect()来操作。
customMsgBox=QMessageBox(self)
lockButton=customMsgBox.addButton(self.tr("锁定"),
QMessageBox.ActionRole)
unlockButton=customMsgBox.addButton(self.tr("解锁"),
QMessageBox.ActionRole)
cancelButton=customMsgBox.addButton("cancel",QMessageBox.ActionRole)
customMsgBox.setText(self.tr("这是一个自定义消息框!"))
customMsgBox.exec_()
button=customMsgBox.clickedButton()
if button==lockButton:
self.label.setText("Custom MessageBox/Lock")
elif button==unlockButton:
self.label.setText("Custom MessageBox/Unlock")
elif button==cancelButton:
self.label.setText("Custom MessageBox/Cancel")
其中,如果按照上面的方式操作, 必须使用exec_() 而不是show(),否则会无效。如果使用button.clicked.connect()来操作,就可以使用show了。
完整代码:
# -*- coding: utf-8 -*-
from PyQt4.QtGui import *
from PyQt4.QtCore import *
import sys , time
QTextCodec.setCodecForTr(QTextCodec.codecForName("utf8"))
class MessageBoxDlg(QDialog):
def __init__(self,parent=None):
super(MessageBoxDlg,self).__init__(parent)
self.setWindowTitle("Messagebox")
self.label=QLabel("About Qt MessageBox")
questionButton=QPushButton("Question")
informationButton=QPushButton("Information")
warningButton=QPushButton("Warning")
criticalButton=QPushButton("Critical")
aboutButton=QPushButton("About")
aboutqtButton=QPushButton("About Qt")
self.customButton=QPushButton("Custom")
gridLayout=QGridLayout(self)
gridLayout.addWidget(self.label,0,0,1,2)
gridLayout.addWidget(questionButton,1,0)
gridLayout.addWidget(informationButton,1,1)
gridLayout.addWidget(warningButton,2,0)
gridLayout.addWidget(criticalButton,2,1)
gridLayout.addWidget(aboutButton,3,0)
gridLayout.addWidget(aboutqtButton,3,1)
gridLayout.addWidget(self.customButton,4,0)
self.connect(questionButton,SIGNAL("clicked()"),self.slotQuestion)
self.connect(informationButton,SIGNAL("clicked()"),self.slotInformation)
self.connect(warningButton,SIGNAL("clicked()"),self.slotWarning)
self.connect(criticalButton,SIGNAL("clicked()"),self.slotCritical)
self.connect(aboutButton,SIGNAL("clicked()"),self.slotAbout)
self.connect(aboutqtButton,SIGNAL("clicked()"),self.slotAboutQt)
self.customButton.clicked.connect(self.slotCustom)
def slotQuestion(self):
button=QMessageBox.question(self,"Question",
self.tr("已到达文档结尾,是否从头查找?"),
QMessageBox.Ok|QMessageBox.Cancel,
QMessageBox.Ok)
if button==QMessageBox.Ok:
self.label.setText("Question button/Ok")
elif button==QMessageBox.Cancel:
self.label.setText("Question button/Cancel")
else:
return
def slotInformation(self):
QMessageBox.information(self,"Information",
self.tr("填写任意想告诉于用户的信息!"))
self.label.setText("Information MessageBox")
def slotWarning(self):
button=QMessageBox.warning(self,"Warning",
self.tr("是否保存对文档的修改?"),
QMessageBox.Save|QMessageBox.Discard|QMessageBox.Cancel,
QMessageBox.Save)
if button==QMessageBox.Save:
self.label.setText("Warning button/Save")
elif button==QMessageBox.Discard:
self.label.setText("Warning button/Discard")
elif button==QMessageBox.Cancel:
self.label.setText("Warning button/Cancel")
else:
return
def slotCritical(self):
QMessageBox.critical(self,"Critical",
self.tr("提醒用户一个致命的错误!"))
self.label.setText("Critical MessageBox")
def slotAbout(self):
QMessageBox.about(self,"About",self.tr("About事例"))
self.label.setText("About MessageBox")
def slotAboutQt(self):
QMessageBox.aboutQt(self,"About Qt")
self.label.setText("About Qt MessageBox")
def slotCustom(self):
customMsgBox=QMessageBox(self)
customMsgBox.setWindowTitle("Custom message box")
lockButton=customMsgBox.addButton(self.tr("锁定"),
QMessageBox.ActionRole)
unlockButton=customMsgBox.addButton(self.tr("解锁"),
QMessageBox.ActionRole)
cancelButton=customMsgBox.addButton("cancel",QMessageBox.ActionRole)
cancelButton.clicked.connect(self.cancelButtonDeal)
customMsgBox.setText(self.tr("这是一个自定义消息框!"))
customMsgBox.show()
customMsgBox.exec_()
#time.sleep(10)
button=customMsgBox.clickedButton()
if button==lockButton:
self.label.setText("Custom MessageBox/Lock")
elif button==unlockButton:
self.label.setText("Custom MessageBox/Unlock")
elif button==cancelButton:
self.label.setText("Custom MessageBox/Cancel")
def cancelButtonDeal(self):
self.label.setText("Custom MessageBox/Cancel")
app=QApplication(sys.argv)
MessageBox=MessageBoxDlg()
MessageBox.show()
app.exec_()
代码大部分来着http://blog.sina.com.cn/s/blog_9b78c9110101a18n.html ,我稍作修改,感谢Doris mm!
- PyQT,QMessageBox 使用介绍
- QMessageBox使用
- PyQT中让QMessageBox按钮显示中文
- QColorDialog和QMessageBox使用
- QMessageBox 简单使用
- Qt下QMessageBox使用
- QMessageBox的使用
- QMessageBox
- QMessageBox
- QMessageBox
- QMessageBox
- QMessageBox
- QMessageBox
- QMessageBox
- QMessageBox
- QMessageBox
- QMessageBox
- QMessageBox
- Mysql中EXPLAIN用法
- 【日常学习】STL之map
- JS获取jsp页面中的参数
- PinnedHeaderExpandableListView
- No result defined for action action.LoginAction and result success 问题解决
- PyQT,QMessageBox 使用介绍
- exit()函数与return的区别 C语言
- linux内核之 快速更换内核
- Problem 041—— UVa 679 - Dropping Balls
- 开通博客的第一天
- java 面试题记录
- silverlight之自定义控件
- Android开发最佳实践
- android开发笔记之android:layout_weight的使用