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. not allowed to access to crontab because of pam configuration

    如果运行crontab如遇下面这样的错误: $ crontab -l You (zhangsan) are not allowed to access to (crontab) because of ...

  2. day15(mysql 的多表查询,事务)

    mysql之多表查询 1.合并结果集 作用:合并结果集就是把两个select语句查询的结果连接到一起! /*创建表t1*/ CREATE TABLE t1( a INT PRIMARY KEY , b ...

  3. hdu 5063 操作逆推+mul每次要*2%(modo - 1)

    http://acm.hdu.edu.cn/showproblem.php?pid=5063 只有50个询问,50个操作逆推回去即可,注意mul每次要*2%(modo - 1)因为是指数! #incl ...

  4. 用NPOI操作EXCEL--巧妙使用Excel Chart

    在NPOI中,本身并不支持Chart等高级对象的创建,但通过l模板的方式可以巧妙地利用Excel强大的透视和图表功能,请看以下例子. 首先建立模板文件,定义两列以及指向此区域的名称“sales”: 创 ...

  5. CentOS 7 安装MySQL 8.0.11

    1. 下载安装包 wget https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.13-1.el7.x86_64.rpm-bundle.tar 下载 ...

  6. C#——调用C++的DLL 数据类型转换

    /C++中的DLL函数原型为        //extern "C" __declspec(dllexport) bool 方法名一(const char* 变量名1, unsig ...

  7. dropdownlist的OnSelectedIndexChanged方法不触发

    解决方法: AutoPostBack="true" if (!IsPostBack){ 数据绑定 } 如果数据绑定后不触发,但是手动添加数据的情况下触发<%@ Page En ...

  8. s11 day104 数据库表结构与立即支付流程

    数据库表结构: 13张 1. 课程大类 2.课程子类 3.学位课程 4.老师表 5.奖学金 6.专题课 7.课程详情 8.课程大纲 9.常见问题 10.章节 11.课时 12.作业表 13.价格策略 ...

  9. Service的使用

    一.Service的适用范围 1.本地服务(Local Service): 应用程序的内部(单个APP) startServcie  stopService  stopSelf  stopSelfRe ...

  10. 记一次生产发版时SpringBoot服务停用启用的问题

    近期项目交接,接手了个SpringBoot项目.生产环境里,jar包是通过软链接做成linux服务来启动和停用. 然而,每次通过jenkins构建发版,项目构建完毕,还要手动再去重启服务. 听交接的同 ...