Python -- Gui编程 -- Qt库的使用 -- 菜单与对话框
2024-08-28 23:12:37
1.菜单
import sys from PyQt4 import QtCore, QtGui class MyWindow(QtGui.QMainWindow): def __init__(self): QtGui.QMainWindow.__init__(self) self.setWindowTitle('QtMenu') self.resize(485, 300) menubar = self.menuBar() file = menubar.addMenu('&File') file.addAction('Open') file.addAction('Save') file.addSeparator() file.addAction('Close') edit = menubar.addMenu('&Edit') edit.addAction('Copy') edit.addAction('Paste') edit.addAction('Cut') edit.addAction('Select All') help = menubar.addMenu('&Help') help.addAction('About') app = QtGui.QApplication(sys.argv) mywindow = MyWindow() mywindow.show() app.exec_()
qtMenu.py
2.菜单事件
import sys from PyQt4 import QtGui, QtCore class MyWindow(QtGui.QMainWindow): def __init__(self): QtGui.QMainWindow.__init__(self) self.setWindowTitle('QtMenuAction') self.resize(485, 300) self.lbl = QtGui.QLabel('Menu Action') self.lbl.setAlignment(QtCore.Qt.AlignCenter) self.setCentralWidget(self.lbl) menubar = self.menuBar() self.file = menubar.addMenu('&File') self.open = self.file.addAction('Open') self.save = self.file.addAction('Save') self.file.addSeparator() self.close = self.file.addAction('Close') self.connect(self.open, QtCore.SIGNAL('triggered()'), self.onOpen) self.connect(self.save, QtCore.SIGNAL('triggered()'), self.onSave) self.connect(self.close, QtCore.SIGNAL('triggered()'), self.onClose) def onOpen(self): self.lbl.setText('Menu Action: Open') def onSave(self): self.lbl.setText('Menu Action: Save') def onClose(self): self.lbl.setText('Menu Action: Close') def contextMenuEvent(self, event): self.file.exec_(event.globalPos()) app = QtGui.QApplication(sys.argv) mywindow = MyWindow() mywindow.show() app.exec_()
qtMenuAction.py
3.消息框
import sys from PyQt4 import QtGui, QtCore class MyWindow(QtGui.QWidget): def __init__(self): QtGui.QWidget.__init__(self) self.setWindowTitle('QtMessageBox') self.resize(485, 300) self.btn1 = QtGui.QPushButton('About') self.btn2 = QtGui.QPushButton('About Qt') self.btn3 = QtGui.QPushButton('Critical') self.btn4 = QtGui.QPushButton('Information') self.btn5 = QtGui.QPushButton('Question') self.btn6 = QtGui.QPushButton('Warning') grid = QtGui.QGridLayout() grid.addWidget(self.btn1, 0, 0) grid.addWidget(self.btn2, 0, 1) grid.addWidget(self.btn3, 0, 2) grid.addWidget(self.btn4, 1, 0) grid.addWidget(self.btn5, 1, 1) grid.addWidget(self.btn6, 1, 2) self.setLayout(grid) self.connect(self.btn1, QtCore.SIGNAL('clicked()'), self.onBtn1) self.connect(self.btn2, QtCore.SIGNAL('clicked()'), self.onBtn2) self.connect(self.btn3, QtCore.SIGNAL('clicked()'), self.onBtn3) self.connect(self.btn4, QtCore.SIGNAL('clicked()'), self.onBtn4) self.connect(self.btn5, QtCore.SIGNAL('clicked()'), self.onBtn5) self.connect(self.btn6, QtCore.SIGNAL('clicked()'), self.onBtn6) def onBtn1(self): QtGui.QMessageBox.about(self, 'Qt', 'about') def onBtn2(self): QtGui.QMessageBox.aboutQt(self, 'Qt') def onBtn3(self): QtGui.QMessageBox.critical(self, 'Qt', 'critical', QtGui.QMessageBox.Abort, QtGui.QMessageBox.Retry, QtGui.QMessageBox.Ignore) def onBtn4(self): QtGui.QMessageBox.information(self, 'Qt', 'information') def onBtn5(self): QtGui.QMessageBox.question(self, 'Qt', 'question', QtGui.QMessageBox.Yes, QtGui.QMessageBox.No, QtGui.QMessageBox.Cancel) def onBtn6(self): QtGui.QMessageBox.warning(self, 'Qt', 'warinng', QtGui.QMessageBox.Yes, QtGui.QMessageBox.No) app = QtGui.QApplication(sys.argv) mywindow = MyWindow() mywindow.show() app.exec_()
pyMessageBox.py
4.标准对话框
import sys from PyQt4 import QtGui, QtCore class MyWindow(QtGui.QWidget): def __init__(self): QtGui.QWidget.__init__(self) self.setWindowTitle('QtStandardDialog') self.resize(485, 300) self.lbl = QtGui.QLabel() self.btn1 = QtGui.QPushButton('File') self.btn2 = QtGui.QPushButton('Font') self.btn3 = QtGui.QPushButton('Color') grid = QtGui.QGridLayout() grid.addWidget(self.lbl, 0, 0, 1, 3) grid.addWidget(self.btn1, 1, 0) grid.addWidget(self.btn2, 1, 1) grid.addWidget(self.btn3, 1, 2) self.setLayout(grid) self.connect(self.btn1, QtCore.SIGNAL('clicked()'), self.onBtn1) self.connect(self.btn2, QtCore.SIGNAL('clicked()'), self.onBtn2) self.connect(self.btn3, QtCore.SIGNAL('clicked()'), self.onBtn3) def onBtn1(self): filename = QtGui.QFileDialog.getOpenFileName(self, 'open') if filename: self.lbl.setText(filename) def onBtn2(self): font, ok = QtGui.QFontDialog.getFont() if ok: self.lbl.setText(font.key()) def onBtn3(self): color = QtGui.QColorDialog.getColor() if color.isValid(): self.lbl.setText(color.name()) app = QtGui.QApplication(sys.argv) mywindow = MyWindow() mywindow.show() app.exec_()
qtStandardDialog.py
5.自定义对话框
import sys from PyQt4 import QtCore, QtGui class MyDialog(QtGui.QDialog): def __init__(self): QtGui.QDialog.__init__(self) self.lbl = QtGui.QLabel('Input:') self.txt = QtGui.QLineEdit() self.btn1 = QtGui.QPushButton('OK') self.btn2 = QtGui.QPushButton('Cancel') grid = QtGui.QGridLayout() grid.addWidget(self.lbl, 0, 0) grid.addWidget(self.txt, 0, 1) grid.addWidget(self.btn1, 1, 0) grid.addWidget(self.btn2, 1, 1) self.setLayout(grid) self.connect(self.btn1, QtCore.SIGNAL('clicked()'), self.onBtn1) self.connect(self.btn2, QtCore.SIGNAL('clicked()'), self.onBtn2) def onBtn1(self): self.text = self.txt.text() self.done(1) def onBtn2(self): self.done(0) class MyWindow(QtGui.QMainWindow): def __init__(self): QtGui.QMainWindow.__init__(self) self.setWindowTitle('QtDialog') self.resize(485, 300) self.btn = QtGui.QPushButton('Click Here') self.setCentralWidget(self.btn) self.connect(self.btn, QtCore.SIGNAL('clicked()'), self.onBtn) def onBtn(self): mydialog = MyDialog() r = mydialog.exec_() if r: self.btn.setText(mydialog.text) app = QtGui.QApplication(sys.argv) mywindow = MyWindow() mywindow.show() app.exec_()
pyDialog.py
最新文章
- 【codevs1170】 双栈排序
- MapReduce编程实现学习
- JNA参数传递问题,Java数组
- Tomcat集群配置学习篇-----分布式应用
- Java多线程内存模型
- [ASP.NET MVC]如何定制Numeric属性/字段验证消息
- hdu1045
- 小兴趣:修改Hosts文件,禁止访问指定网页
- hdu1570(排列和组合公式的应用)
- LeetCode题目总结(三)
- 使用SVM对多类多维数据进行分类
- Angular路由——辅助路由
- Gson入门教程【原】
- javascript 将毫秒值转换为天-小时-分钟-秒钟
- Java课程寒假之开发记账本软件(网页版)之五
- testDecoration
- [原]vue中各模块的实际引用
- Linux命令:mapfile
- poj 3009 冰球 【DFS】求最小步数
- maven3.5.0在win10中的安装及环境变量配置
热门文章
- struts2从浅至深(四)下载文件
- (并查集)Connections in Galaxy War -- zoj --3261 还没写
- hdu1302 The Snail
- 西邮Linux兴趣小组2014级免试挑战题 (续)
- Delphi XE10 dxLayoutControl 控件应用指南
- Eclipse使用Maven搭建Java Web项目,并直接部署Tomcat(转载)
- Microsoft SQL Server 2012 管理 (2): 实例与数据库管理
- Cocos2d-三维拾取Ray-AABB碰撞检测算法【转】
- Minimax-486. Predict the Winner
- ajax post 400 bad request