import sys
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QMainWindow, QMenuBar, QToolBar, QTextEdit, QAction, QApplication, qApp, QMessageBox
from PyQt5.QtCore import Qt import threading
import time songs = ['爱情买卖','朋友','回家过年','好日子']
films = ['阿凡达','猩球崛起'] class MyWindow(QMainWindow):
def __init__(self):
super().__init__() self.resize(677, 442)
self.setWindowTitle("我的程序") self.createUI()
self.createAction()
self.createStatusbar()
self.createMenu()
self.createToolbar() def createUI(self):
self.textedit = QTextEdit()
self.setCentralWidget(self.textedit) # 动作
def createAction(self):
self.exit_action = QAction(QIcon("ico_new.jpg"), "退出", self, triggered=qApp.quit)
self.exit_action.setStatusTip("退出程序")
self.exit_action.setShortcut("Ctrl+Q")
self.exit_action.triggered.connect(qApp.quit) # 状态栏
def createStatusbar(self):
self.statusBar() # 菜单栏
def createMenu(self):
#menubar = QMenuBar(self)
menubar = self.menuBar()
menu = menubar.addMenu("文件(F)")
menu.addAction(QAction(QIcon("ico_new_16_16.jpg"), "新建", self, triggered=qApp.quit)) # 带图标,文字
menu.addAction(QAction(QIcon("ico_open_16_16.jpg"), "打开", self, triggered=qApp.quit))
menu.addAction(QAction(QIcon("ico_save_16_16.jpg"), "保存", self, triggered=qApp.quit))
menu.addSeparator()
menu.addAction(QAction(QIcon("ico_close_16_16.jpg"), "关闭", self, triggered=lambda :QMessageBox.about(self, '关闭','关闭。。。'))) menu = menubar.addMenu("编辑(E)")
menu.addAction(QAction("撤销", self, triggered=qApp.quit)) # 不带图标
menu.addAction(QAction("剪切", self, triggered=qApp.quit))
menu.addAction(QAction("复制", self, triggered=qApp.quit))
menu.addAction(QAction("粘贴", self, triggered=qApp.quit)) menu = menubar.addMenu("娱乐(S)")
menu.addAction(QAction("音乐", self, triggered=lambda :self.thread_it(self.music, songs))) # 线程
menu.addAction(QAction("电影", self, triggered=lambda :self.thread_it(self.movie, films))) menu = menubar.addMenu("帮助(H)")
menu.addAction('&New', lambda :QMessageBox.about(self, 'New','新建。。。'), Qt.CTRL + Qt.Key_N) # 注意快捷键
menu.addAction('关于', lambda :QMessageBox.about(self, '关于','关于。。。'), Qt.CTRL + Qt.Key_Q) # 工具栏
def createToolbar(self):
toolbar = self.addToolBar('文件')
toolbar.addAction(QAction(QIcon("ico_new_16_16.jpg"), "新建", self, triggered=qApp.quit)) # 带图标,文字
toolbar.addAction(QAction(QIcon("ico_open_16_16.jpg"), "打开", self, triggered=qApp.quit))
toolbar.addSeparator()
toolbar.addAction(QAction(QIcon("ico_save_16_16.jpg"), "打开", self, triggered=qApp.quit)) toolbar = self.addToolBar("编辑")
toolbar.addAction(QAction("撤销", self, triggered=qApp.quit)) # 不带图标
toolbar.addAction(QAction("剪切", self, triggered=qApp.quit)) # 逻辑:听音乐
def music(self, songs):
for x in songs:
self.textedit.append("听音乐:%s \t-- %s" %(x, time.ctime()))
time.sleep(3) # 逻辑:看电影
def movie(self, films):
for x in films:
self.textedit.append("看电影:%s \t-- %s" %(x, time.ctime()))
time.sleep(5) # 打包进线程(耗时的操作)
@staticmethod
def thread_it(func, *args):
t = threading.Thread(target=func, args=args)
t.setDaemon(True) # 守护--就算主界面关闭,线程也会留守后台运行(不对!)
t.start() # 启动
# t.join() # 阻塞--会卡死界面! app = QApplication(sys.argv)
win = MyWindow()
win.show()
sys.exit(app.exec_())

pyqt5 菜单,工具栏,线程,matplotlib的更多相关文章

  1. 基于 SailingEase WinForm Framework 开发客户端程序(3:实现菜单/工具栏按钮的解耦及状态控制)

    本系列文章将详细阐述客户端应用程序的设计理念,实现方法. 本系列文章以  SailingEase WinForm Framework 为基础进行设计并实现,但其中的设计理念及方法,亦适用于任何类型的客 ...

  2. 菜单工具栏wxPython菜单与工具栏基础示例

    这两天一直在学习菜单工具栏之类的问题,上午正好有机会和大家讨论一下. 1.基本的api介绍 Package wx :: Class Menu Type Menu Method Summary Menu ...

  3. Python+PyQT5的子线程更新UI界面的实例《新手必学》

    今天小编就为大家分享一篇Python+PyQT5的子线程更新UI界面的实例,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧子线程里是不能更新UI界面的,在移动端方面.Android的U ...

  4. pyqt5 -——菜单和工具栏

    一. 状态栏 # -*- coding: utf-8 -*-# @Time : 2018/12/22 12:37# @Author : Bo# @Email : mat_wu@163.com# @Fi ...

  5. PyQt5 QSerialPort子线程操作

    环境: python3.6 pyqt5 只是简单的一个思路,请忽略脆弱的异常防护: # -*- coding: utf-8 -*- import sys from PyQt5.QtWidgets im ...

  6. WindowsForm菜单工具栏--2016年12月6日

    ContextMenuStrip 添加控件后可在其他空间属性中进行绑定 MenuStrip       设置热键:在编辑的时候输入(&F)       设置快捷键:选中菜单项--右键属性--S ...

  7. 菜单 & 工具栏 & 状态栏

    MFC中ON_UPDATE_COMMAND_UI和ON_COMMAND消息区别 CCmdUI 加载状态栏 加载工具栏

  8. pyqt5 重启相同线程错误:QThread: Destroyed while thread is still running

    背景: 把一个基于QObject的类的槽运行在另一个线程,我们可以用moveToThread的方法. 1 新建一个子线程类,编写槽函数和信号,MyClass *m_MyClass=new MyClas ...

  9. PyQt 5菜单和工具栏

    QMainWindow类提供主要应用程序的窗口,有添加状态栏.工具栏.菜单栏等功能 状态栏 self.statusBar().showMessage('Ready') # 创建一个状态栏 # 状态栏显 ...

随机推荐

  1. 【OpenCV】透视变换矫正

    演示结果参考: 功能实现:运行程序,会显示图片的尺寸,按回车键后,依次点击需矫正的图片的左上.右上.左下.右下角,并能显示其坐标,结果弹出矫正后的图片,如图上的PIC2对话框.可以继续选择图片四个点进 ...

  2. 死磕salt系列-salt入门

    saltstack简介 SaltStack是一种新型的基础设施管理软件,简单易部署,可伸缩的足以管理成千上万的服务器,和足够快的速度控制,与他们交流,以毫秒为单位.SaltStack提供了一个动态基础 ...

  3. 3、Android-全局大喇叭-广播机制

    所谓的官博机制可以理解成为1对多的概念 即一个喇叭所有的人都能听到(统一范围内) 为了便于及逆行系统级别的消息通知 Android引入了一套广播机制 而且更容易进行实现. 3.1.广播机制的简介 再A ...

  4. selenium以及浏览器驱动下载安装

    1.下载selenium压缩包 http://pypi.python.org/pypi/selenium 下载后压缩在python文件下的lib>site-package文件夹下 2.进入sel ...

  5. PAT——1068. 万绿丛中一点红

    对于计算机而言,颜色不过是像素点对应的一个24位的数值.现给定一幅分辨率为MxN的画,要求你找出万绿丛中的一点红,即有独一无二颜色的那个像素点,并且该点的颜色与其周围8个相邻像素的颜色差充分大. 输入 ...

  6. JNI由浅入深_3_Hello World

    1.需要准备的工具,eclipse,cdt(c++)插件,cygwin(unix)和 android ndk. 在cygwin的etc目录下将ndk的路径引入到profile文件中,可以在cygwin ...

  7. Mac下python3配置Sklearn

    服务器要有Python 环境 ,也要有Python运行的依赖包,Java与Python使用Process进程进行通讯. 安装homebrew /usr/bin/ruby -e "$(curl ...

  8. 苹果编程语言Swift简介

    Swift是什么? Swift是苹果于WWDC 2014发布的编程语言,The Swift Programming Language的原话: Swift is a new programming la ...

  9. 批量kill杀死某些会话session的PL/SQL

    原文:http://blog.itpub.net/9240380/viewspace-666622/ SQL> declare 2 v_sid v$session.sid%type; --定义如 ...

  10. C# 参数关键字params的作用

    为了将方法声明为可以接受可变数量参数的方法,我们可以使用params关键字来声明数组,要求: (1)在方法声明中的 params 关键字之后不允许任何其他参数,并且在方法声明中只允许一个 params ...