Python -- Gui编程 -- Qt库的使用 -- 菜单与对话框

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_()
qtMenu.py

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_()
qtMenuAction.py

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_()
pyMessageBox.py

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_()
qtStandardDialog.py

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_()
pyDialog.py

转载于:https://www.cnblogs.com/baijifeilong/p/3707260.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值