1.菜单
1 import sys 2 from PyQt4 import QtCore, QtGui 3 4 class MyWindow(QtGui.QMainWindow): 5 def __init__(self): 6 QtGui.QMainWindow.__init__(self) 7 self.setWindowTitle('QtMenu') 8 self.resize(485, 300) 9 10 menubar = self.menuBar() 11 file = menubar.addMenu('&File') 12 file.addAction('Open') 13 file.addAction('Save') 14 file.addSeparator() 15 file.addAction('Close') 16 17 edit = menubar.addMenu('&Edit') 18 edit.addAction('Copy') 19 edit.addAction('Paste') 20 edit.addAction('Cut') 21 edit.addAction('Select All') 22 23 help = menubar.addMenu('&Help') 24 help.addAction('About') 25 26 app = QtGui.QApplication(sys.argv) 27 mywindow = MyWindow() 28 mywindow.show() 29 app.exec_()
2.菜单事件
1 import sys 2 from PyQt4 import QtGui, QtCore 3 4 class MyWindow(QtGui.QMainWindow): 5 def __init__(self): 6 QtGui.QMainWindow.__init__(self) 7 self.setWindowTitle('QtMenuAction') 8 self.resize(485, 300) 9 self.lbl = QtGui.QLabel('Menu Action') 10 self.lbl.setAlignment(QtCore.Qt.AlignCenter) 11 self.setCentralWidget(self.lbl) 12 13 menubar = self.menuBar() 14 self.file = menubar.addMenu('&File') 15 self.open = self.file.addAction('Open') 16 self.save = self.file.addAction('Save') 17 self.file.addSeparator() 18 self.close = self.file.addAction('Close') 19 20 self.connect(self.open, QtCore.SIGNAL('triggered()'), self.onOpen) 21 self.connect(self.save, QtCore.SIGNAL('triggered()'), self.onSave) 22 self.connect(self.close, QtCore.SIGNAL('triggered()'), self.onClose) 23 24 def onOpen(self): 25 self.lbl.setText('Menu Action: Open') 26 def onSave(self): 27 self.lbl.setText('Menu Action: Save') 28 def onClose(self): 29 self.lbl.setText('Menu Action: Close') 30 def contextMenuEvent(self, event): 31 self.file.exec_(event.globalPos()) 32 33 app = QtGui.QApplication(sys.argv) 34 mywindow = MyWindow() 35 mywindow.show() 36 app.exec_()
3.消息框
1 import sys 2 from PyQt4 import QtGui, QtCore 3 4 class MyWindow(QtGui.QWidget): 5 def __init__(self): 6 QtGui.QWidget.__init__(self) 7 self.setWindowTitle('QtMessageBox') 8 self.resize(485, 300) 9 10 self.btn1 = QtGui.QPushButton('About') 11 self.btn2 = QtGui.QPushButton('About Qt') 12 self.btn3 = QtGui.QPushButton('Critical') 13 self.btn4 = QtGui.QPushButton('Information') 14 self.btn5 = QtGui.QPushButton('Question') 15 self.btn6 = QtGui.QPushButton('Warning') 16 17 grid = QtGui.QGridLayout() 18 grid.addWidget(self.btn1, 0, 0) 19 grid.addWidget(self.btn2, 0, 1) 20 grid.addWidget(self.btn3, 0, 2) 21 grid.addWidget(self.btn4, 1, 0) 22 grid.addWidget(self.btn5, 1, 1) 23 grid.addWidget(self.btn6, 1, 2) 24 self.setLayout(grid) 25 26 self.connect(self.btn1, QtCore.SIGNAL('clicked()'), self.onBtn1) 27 self.connect(self.btn2, QtCore.SIGNAL('clicked()'), self.onBtn2) 28 self.connect(self.btn3, QtCore.SIGNAL('clicked()'), self.onBtn3) 29 self.connect(self.btn4, QtCore.SIGNAL('clicked()'), self.onBtn4) 30 self.connect(self.btn5, QtCore.SIGNAL('clicked()'), self.onBtn5) 31 self.connect(self.btn6, QtCore.SIGNAL('clicked()'), self.onBtn6) 32 33 def onBtn1(self): 34 QtGui.QMessageBox.about(self, 'Qt', 'about') 35 def onBtn2(self): 36 QtGui.QMessageBox.aboutQt(self, 'Qt') 37 def onBtn3(self): 38 QtGui.QMessageBox.critical(self, 'Qt', 'critical', QtGui.QMessageBox.Abort, QtGui.QMessageBox.Retry, QtGui.QMessageBox.Ignore) 39 def onBtn4(self): 40 QtGui.QMessageBox.information(self, 'Qt', 'information') 41 def onBtn5(self): 42 QtGui.QMessageBox.question(self, 'Qt', 'question', QtGui.QMessageBox.Yes, QtGui.QMessageBox.No, QtGui.QMessageBox.Cancel) 43 def onBtn6(self): 44 QtGui.QMessageBox.warning(self, 'Qt', 'warinng', QtGui.QMessageBox.Yes, QtGui.QMessageBox.No) 45 46 app = QtGui.QApplication(sys.argv) 47 mywindow = MyWindow() 48 mywindow.show() 49 app.exec_()
4.标准对话框
1 import sys 2 from PyQt4 import QtGui, QtCore 3 4 class MyWindow(QtGui.QWidget): 5 def __init__(self): 6 QtGui.QWidget.__init__(self) 7 self.setWindowTitle('QtStandardDialog') 8 self.resize(485, 300) 9 10 self.lbl = QtGui.QLabel() 11 self.btn1 = QtGui.QPushButton('File') 12 self.btn2 = QtGui.QPushButton('Font') 13 self.btn3 = QtGui.QPushButton('Color') 14 15 grid = QtGui.QGridLayout() 16 grid.addWidget(self.lbl, 0, 0, 1, 3) 17 grid.addWidget(self.btn1, 1, 0) 18 grid.addWidget(self.btn2, 1, 1) 19 grid.addWidget(self.btn3, 1, 2) 20 self.setLayout(grid) 21 22 self.connect(self.btn1, QtCore.SIGNAL('clicked()'), self.onBtn1) 23 self.connect(self.btn2, QtCore.SIGNAL('clicked()'), self.onBtn2) 24 self.connect(self.btn3, QtCore.SIGNAL('clicked()'), self.onBtn3) 25 26 def onBtn1(self): 27 filename = QtGui.QFileDialog.getOpenFileName(self, 'open') 28 if filename: 29 self.lbl.setText(filename) 30 def onBtn2(self): 31 font, ok = QtGui.QFontDialog.getFont() 32 if ok: 33 self.lbl.setText(font.key()) 34 def onBtn3(self): 35 color = QtGui.QColorDialog.getColor() 36 if color.isValid(): 37 self.lbl.setText(color.name()) 38 39 app = QtGui.QApplication(sys.argv) 40 mywindow = MyWindow() 41 mywindow.show() 42 app.exec_()
5.自定义对话框
1 import sys 2 from PyQt4 import QtCore, QtGui 3 4 class MyDialog(QtGui.QDialog): 5 def __init__(self): 6 QtGui.QDialog.__init__(self) 7 8 self.lbl = QtGui.QLabel('Input:') 9 self.txt = QtGui.QLineEdit() 10 self.btn1 = QtGui.QPushButton('OK') 11 self.btn2 = QtGui.QPushButton('Cancel') 12 13 grid = QtGui.QGridLayout() 14 grid.addWidget(self.lbl, 0, 0) 15 grid.addWidget(self.txt, 0, 1) 16 grid.addWidget(self.btn1, 1, 0) 17 grid.addWidget(self.btn2, 1, 1) 18 self.setLayout(grid) 19 20 self.connect(self.btn1, QtCore.SIGNAL('clicked()'), self.onBtn1) 21 self.connect(self.btn2, QtCore.SIGNAL('clicked()'), self.onBtn2) 22 23 def onBtn1(self): 24 self.text = self.txt.text() 25 self.done(1) 26 def onBtn2(self): 27 self.done(0) 28 29 class MyWindow(QtGui.QMainWindow): 30 def __init__(self): 31 QtGui.QMainWindow.__init__(self) 32 self.setWindowTitle('QtDialog') 33 self.resize(485, 300) 34 35 self.btn = QtGui.QPushButton('Click Here') 36 self.setCentralWidget(self.btn) 37 38 self.connect(self.btn, QtCore.SIGNAL('clicked()'), self.onBtn) 39 40 def onBtn(self): 41 mydialog = MyDialog() 42 r = mydialog.exec_() 43 if r: 44 self.btn.setText(mydialog.text) 45 46 app = QtGui.QApplication(sys.argv) 47 mywindow = MyWindow() 48 mywindow.show() 49 app.exec_()