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库的使用 -- 菜单与对话框的更多相关文章

  1. Python -- Gui编程 -- Qt库的使用 -- 配置资源文件

    1.源文件(qtRes.py) import sys from PyQt4 import QtCore, QtGui, uic class MyDialog(QtGui.QDialog): def _ ...

  2. Python -- Gui编程 -- Qt库的使用 -- 布局与基本控件

    1.垂直布局,水平布局和网格布局 import sys from PyQt4 import QtCore, QtGui class MyWindow(QtGui.QWidget): def __ini ...

  3. C/C++ -- Gui编程 -- Qt库的使用 -- 使用.ui文件

    1.创建Qt空工程 2.添加Qt设计师界面,无按钮对话框helloqt.ui 3.编辑界面,添加部件,修改对话框对象名为HelloQt <?xml version="1.0" ...

  4. C/C++ -- Gui编程 -- Qt库的使用 -- 理解主窗体构造函数

    MyWidget做父窗体 MyWidget的构造函数中可以手动添加组件 Ui::MyWidget存放子部件 Ui::MyWidget执行setupUi()函数为子部件开辟空间,指定父窗体 MyWidg ...

  5. C/C++ -- Gui编程 -- Qt库的使用 -- 标准对话框

    -----mywidget.cpp----- #include "mywidget.h" #include "ui_mywidget.h" #include & ...

  6. C/C++ -- Gui编程 -- Qt库的使用 -- 信号与槽 -- 欢迎界面

    程序运行先显示一个对话框,确定进入主程序 1.新建Qt工程,类MyWidget,基类QWidget 2.新建设计师界面类MyDialog,基类QDialog 3.-----main.cpp----- ...

  7. C/C++ -- Gui编程 -- Qt库的使用 -- 信号与槽的关联

    Qt信号与槽的三种关联方法:1.设计界面关联,编辑信号/槽,自动关联 2.手动关联(1).头文件中定义槽 -----mywidget.h----- #ifndef MYWIDGET_H #define ...

  8. C/C++ -- Gui编程 -- Qt库的使用 -- Qt5总结

    主要变化: 1.与Qt4相比,Qt5可以直接显示中文不需要手工转码2.Qt5模块发生变化,大部分组件并入widgets模块 注意事项:工程文件加一句greaterThan(QT_MAJOR_VERSI ...

  9. C/C++ -- Gui编程 -- Qt库的使用 -- Qt5试用

    1.头文件<QtGui>变成了<QtWidgets> 相应<QtGui/***>变成了<QtWidgets/***> 2.QTextCodec::set ...

随机推荐

  1. MySQL性能调优与架构设计——第 18 章 高可用设计之 MySQL 监控

    第 18 章 高可用设计之 MySQL 监控 前言: 一个经过高可用可扩展设计的 MySQL 数据库集群,如果没有一个足够精细足够强大的监控系统,同样可能会让之前在高可用设计方面所做的努力功亏一篑.一 ...

  2. linux信号量(转载)

    本文转载自http://blog.csdn.net/qinxiongxu/article/details/7830537 信号量一.什么是信号量信号量的使用主要是用来保护共享资源,使得资源在一个时刻只 ...

  3. Oracle sql 优化の常用方式

    1.不要用 '*' 代替所有列名,特别是字段比较多的情况下 使用select * 可以列出某个表的所有列名,但是这样的写法对于Oracle来说会存在动态解析问题.Oracle系统通过查询数据字典将 ' ...

  4. delphi 安卓程序如何读取外部配置文件

    1)编辑一个config.txt文件,填写配置系统. 2)有外部加载文件时,安卓发布需要另行指定文件发布目录位置 比如加载config.txt需要在 首先利用Project->Deploymen ...

  5. Windows下常用的100个CMD指令以及常见的操作

    gpedit.msc—–组策略 2. sndrec32——-录音机 3. Nslookup——-IP地址侦测器 ,是一个 监测网络中 DNS 服务器是否能正确实现域名解析的命令行工具. 它在 Wind ...

  6. asp.net MVC把Areas区域绑定成二级域名

    先分析需求 在MVC项目中,我们如果有两个Areas.比如Test和DEMO.我们的访问地址应该是 http://localhost:8098/test http://localhost:8098/d ...

  7. AspNetCore Mvc 自定义中间件认证

    AspNetCore Mvc 自定义中间件认证 实现控制器访问验证和拦截. 1.注册政策. 例如: services.AddAuthorization(options => { options. ...

  8. C#多线程编程系列(五)- 使用任务并行库

    目录 1.1 简介 1.2 创建任务 1.3 使用任务执行基本的操作 1.4 组合任务 1.5 将APM模式转换为任务 1.6 将EAP模式转换为任务 1.7 实现取消选项 1.8 处理任务中的异常 ...

  9. 知识记录:ASP.NET 应用程序生命周期概述及Global.asax文件中的事件

    IIS7 ASP.NET 应用程序生命周期概述 https://msdn.microsoft.com/zh-cn/library/bb470252(v=vs.100).aspx HttpApplica ...

  10. ifnull是个好东西

    在进行数据与服务器的数据运算的时候(或者直接在sql中运算的时候),在新插入值的时候,可能会有null,这时如果进行运算,会报错,比如后台字段有totalminute,无论初始值怎么设置,在新建的时候 ...