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 ...
随机推荐
- spring boot docker 初尝试
Docker服务中进程间通信通过/var/run/docker.sock实现,默认服务不提供监听端口,因此使用docker remote api 需要手动绑定端口. 在centos7.2下,可以进行这 ...
- (匹配 二维建图) Antenna Placement --POJ --3020
链接: http://poj.org/problem?id=3020 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=82834#probl ...
- http://www.cnblogs.com/xalion/p/5111279.html
https://quality.embarcadero.com/secure/Dashboard.jspa 注册成 delphi qc
- System.Windows.Freezable 在未被引用的程序集中定义
System.Windows.Freezable 在未被引用的程序集中定义 解决方法 添加windowsbase.dll 引用
- Quartz.net 的 FAQ
Quartz 是什么? Quartz 是作业调度系统,可以集成进其他软件系统.这里[作业调度程序]一词是指,在预定义时间执行(或通知)其他组件的系统. Quartz 有什么优点? 灵活,有多种使用方式 ...
- Asp.net WebForm 中无法引用App_Code文件夹下的类
在VS2013中新建asp.net webform应用程序,手动添加"APP_Code"文件夹并新建类文件,发现这些类无法在APP_Code文件夹以外被引用. 解决办法: 选中类文 ...
- 构建NetCore应用框架之实战篇(一):什么是框架,如何设计一个框架
一.系列简述 本篇起,将通过一系列文章,去描述如何构建一个应用开发框架,并以作者开发的框架为例,逐个点展开分析,如何从零开始,构建自己的开发框架. 本系列文章的目的,是带领有一编程经验的人,通过动手, ...
- 一,php的错误处理和异常处理
php程序中如果语法或逻辑错误,会引起php默认错误处理机制,不会引起异常处理机制,只有在程序中throw抛出异常后,如果没有catch捕捉异常,默认调用php默认异常处理. php有默认错误机制和默 ...
- 编写 ES6 的 7 个实用技巧
无脑翻译走一波~ Hack #1 - 变量交换 使用数组解构交换变量的值 let a = 'world', b = 'hello' [a, b] = [b, a] console.log(a) // ...
- 本地数据库导入线上服务器的mongodb中
更改默认端口 sudo vi /etc/mongod.conf 进入conf文件,修改port值为19999保存并退出. 重启mongodb sudo service mongod restart 进 ...