PyQt - QMessageBox

QMessageBoxเป็นกล่องโต้ตอบโมดอลที่ใช้กันทั่วไปเพื่อแสดงข้อความให้ข้อมูลและขอให้ผู้ใช้ตอบกลับโดยคลิกปุ่มมาตรฐานปุ่มใดปุ่มหนึ่ง ปุ่มมาตรฐานแต่ละปุ่มมีคำอธิบายภาพที่กำหนดไว้ล่วงหน้าบทบาทและส่งกลับตัวเลขฐานสิบหกที่กำหนดไว้ล่วงหน้า

วิธีการและการแจงนับที่สำคัญที่เกี่ยวข้องกับคลาส QMessageBox มีให้ในตารางต่อไปนี้ -

ซีเนียร์ วิธีการและคำอธิบาย
1

setIcon()

แสดงไอคอนที่กำหนดไว้ล่วงหน้าที่สอดคล้องกับความรุนแรงของข้อความ

คำถาม

ข้อมูล

คำเตือน

สำคัญ

2

setText()

ตั้งค่าข้อความของข้อความหลักที่จะแสดง

3

setInformativeText()

แสดงข้อมูลเพิ่มเติม

4

setDetailText()

กล่องโต้ตอบแสดงปุ่มรายละเอียด ข้อความนี้ปรากฏขึ้นเมื่อคลิก

5

setTitle()

แสดงหัวเรื่องที่กำหนดเองของไดอะล็อก

6

setStandardButtons()

รายการปุ่มมาตรฐานที่จะแสดง แต่ละปุ่มเชื่อมโยงกับ

QMessageBox ตกลง 0x00000400

QMessageBox เปิด 0x00002000

QMessageBox บันทึก 0x00000800

QMessageBox ยกเลิก 0x00400000

QMessageBox ปิด 0x00200000

QMessageBox ใช่ 0x00004000

QMessageBox ไม่มี 0x00010000

QMessageBox.Abort 0x00040000

QMessageBox.Retry 0x00080000

QMessageBox ละเว้น 0x00100000

7

setDefaultButton()

ตั้งค่าปุ่มเป็นค่าเริ่มต้น จะส่งเสียงสัญญาณคลิกหากกด Enter

8

setEscapeButton()

ตั้งค่าปุ่มให้ถือว่าเป็นคลิกหากกดแป้น Escape

ตัวอย่าง

ในตัวอย่างต่อไปนี้คลิกสัญญาณของปุ่มบนหน้าต่างระดับบนสุดฟังก์ชันที่เชื่อมต่อจะแสดงกล่องโต้ตอบกล่องข้อความ

msg = QMessageBox()
msg.setIcon(QMessageBox.Information)
msg.setText("This is a message box")
msg.setInformativeText("This is additional information")
msg.setWindowTitle("MessageBox demo")
msg.setDetailedText("The details are as follows:")

ฟังก์ชัน setStandardButton () จะแสดงปุ่มที่ต้องการ

msg.setStandardButtons(QMessageBox.Ok | QMessageBox.Cancel)

buttonClicked () สัญญาณเชื่อมต่อกับฟังก์ชั่นสล็อตซึ่งระบุคำอธิบายของแหล่งที่มาของสัญญาณ

msg.buttonClicked.connect(msgbtn)

โค้ดที่สมบูรณ์สำหรับตัวอย่างมีดังนี้ -

import sys
from PyQt4.QtGui import *
from PyQt4.QtCore import *

def window():
   app = QApplication(sys.argv)
   w = QWidget()
   b = QPushButton(w)
   b.setText("Show message!")

   b.move(50,50)
   b.clicked.connect(showdialog)
   w.setWindowTitle("PyQt Dialog demo")
   w.show()
   sys.exit(app.exec_())
	
def showdialog():
   msg = QMessageBox()
   msg.setIcon(QMessageBox.Information)

   msg.setText("This is a message box")
   msg.setInformativeText("This is additional information")
   msg.setWindowTitle("MessageBox demo")
   msg.setDetailedText("The details are as follows:")
   msg.setStandardButtons(QMessageBox.Ok | QMessageBox.Cancel)
   msg.buttonClicked.connect(msgbtn)
	
   retval = msg.exec_()
   print "value of pressed message box button:", retval
	
def msgbtn(i):
   print "Button pressed is:",i.text()
	
if __name__ == '__main__': 
   window()

รหัสด้านบนสร้างผลลัพธ์ต่อไปนี้ -