Python -- Gui编程 -- Qt库的使用 -- 菜单与对话框
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

Python -- Gui编程 -- Qt库的使用 -- 菜单与对话框的更多相关文章
- Python -- Gui编程 -- Qt库的使用 -- 配置资源文件
1.源文件(qtRes.py) import sys from PyQt4 import QtCore, QtGui, uic class MyDialog(QtGui.QDialog): def _ ...
- Python -- Gui编程 -- Qt库的使用 -- 布局与基本控件
1.垂直布局,水平布局和网格布局 import sys from PyQt4 import QtCore, QtGui class MyWindow(QtGui.QWidget): def __ini ...
- C/C++ -- Gui编程 -- Qt库的使用 -- 使用.ui文件
1.创建Qt空工程 2.添加Qt设计师界面,无按钮对话框helloqt.ui 3.编辑界面,添加部件,修改对话框对象名为HelloQt <?xml version="1.0" ...
- C/C++ -- Gui编程 -- Qt库的使用 -- 理解主窗体构造函数
MyWidget做父窗体 MyWidget的构造函数中可以手动添加组件 Ui::MyWidget存放子部件 Ui::MyWidget执行setupUi()函数为子部件开辟空间,指定父窗体 MyWidg ...
- C/C++ -- Gui编程 -- Qt库的使用 -- 标准对话框
-----mywidget.cpp----- #include "mywidget.h" #include "ui_mywidget.h" #include & ...
- C/C++ -- Gui编程 -- Qt库的使用 -- 信号与槽 -- 欢迎界面
程序运行先显示一个对话框,确定进入主程序 1.新建Qt工程,类MyWidget,基类QWidget 2.新建设计师界面类MyDialog,基类QDialog 3.-----main.cpp----- ...
- C/C++ -- Gui编程 -- Qt库的使用 -- 信号与槽的关联
Qt信号与槽的三种关联方法:1.设计界面关联,编辑信号/槽,自动关联 2.手动关联(1).头文件中定义槽 -----mywidget.h----- #ifndef MYWIDGET_H #define ...
- C/C++ -- Gui编程 -- Qt库的使用 -- Qt5总结
主要变化: 1.与Qt4相比,Qt5可以直接显示中文不需要手工转码2.Qt5模块发生变化,大部分组件并入widgets模块 注意事项:工程文件加一句greaterThan(QT_MAJOR_VERSI ...
- C/C++ -- Gui编程 -- Qt库的使用 -- Qt5试用
1.头文件<QtGui>变成了<QtWidgets> 相应<QtGui/***>变成了<QtWidgets/***> 2.QTextCodec::set ...
随机推荐
- C++主流编译器整理(编译器版本--供应商--C++11支持情况)
C++标准 年份 C++标准 俗称 备注 2011 ISO/IEC 14882:2011 C++11 第三个C++标准 2007 ISO/IEC TR ...
- [H5-Compress-Image]利用canvas实现 javascript 图片压缩处理_基于requirejs模块化的代码实现
// 还存在有问题的代码,问题在于processFile()中// 问题:在ipone 5c 下,某些图片压缩处理后,上传到服务器生成的文件size为0,即是空白 ;define(['mod/tool ...
- mssql内存表
自MSSQL2014开始引入内存表. 怎样创建内存表: USE testGO ALTER DATABASE testADD FILEGROUP fg_test CONTAINS MEMORY_OPTI ...
- linux系统编程之文件与IO(一):文件描述符、open,close
什么是IO? 输入/输出是主存和外部设备之间拷贝数据的过程 设备->内存(输入操作) 内存->设备(输出操作) 高级I/O ANSI C提供的标准I/O库称为高级I/O,通常也称为带缓冲的 ...
- LinkServer--在Job中使用Linkserver注意事项
如果要使用job来调用link server的话,不能使用作业步骤属性高级选项中”作为以下用户运行“来以本地登录用户模拟远程用户访问远程服务器.会报”无法建立安全上下文“的错误. 将Job中代码封装到 ...
- Angular6 学习笔记——组件详解之模板语法
angular6.x系列的学习笔记记录,仍在不断完善中,学习地址: https://www.angular.cn/guide/template-syntax http://www.ngfans.net ...
- 世界各国货币,C#数字货币计算
货币 CCY(Currency)本质上是一种所有者与市场关于交换权的契约,根本上是所有者相互之间的约定.吾以吾之所有予市场,换吾之所需,货币就是这一过程的约定,它反映的是个体与社会的经济协作关系.货币 ...
- JEECG(一) 如何配置自己的业务包
使用自己的业务包开发,不在com.jeecg业务包下 请首先阅读这篇文章[官网] http://www.jeecg.org/forum.php?mod=viewthread&tid=1832& ...
- jieba库的使用与词云
一.准备 在制作词云之前我们需要自行安装三个库,它们分别是:jieba, wordcloud, matplotlib 安装方法基本一致,下面我以安装wordcloud的过程为例. 第一步,按下Win+ ...
- 删除 iptables nat 规则
原文:https://www.cnblogs.com/hixiaowei/p/8954161.html 删除FORWARD 规则: iptables -nL FORWARD --line-number ...