pyqt5 菜单,工具栏,线程,matplotlib

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的更多相关文章
- 基于 SailingEase WinForm Framework 开发客户端程序(3:实现菜单/工具栏按钮的解耦及状态控制)
本系列文章将详细阐述客户端应用程序的设计理念,实现方法. 本系列文章以 SailingEase WinForm Framework 为基础进行设计并实现,但其中的设计理念及方法,亦适用于任何类型的客 ...
- 菜单工具栏wxPython菜单与工具栏基础示例
这两天一直在学习菜单工具栏之类的问题,上午正好有机会和大家讨论一下. 1.基本的api介绍 Package wx :: Class Menu Type Menu Method Summary Menu ...
- Python+PyQT5的子线程更新UI界面的实例《新手必学》
今天小编就为大家分享一篇Python+PyQT5的子线程更新UI界面的实例,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧子线程里是不能更新UI界面的,在移动端方面.Android的U ...
- pyqt5 -——菜单和工具栏
一. 状态栏 # -*- coding: utf-8 -*-# @Time : 2018/12/22 12:37# @Author : Bo# @Email : mat_wu@163.com# @Fi ...
- PyQt5 QSerialPort子线程操作
环境: python3.6 pyqt5 只是简单的一个思路,请忽略脆弱的异常防护: # -*- coding: utf-8 -*- import sys from PyQt5.QtWidgets im ...
- WindowsForm菜单工具栏--2016年12月6日
ContextMenuStrip 添加控件后可在其他空间属性中进行绑定 MenuStrip 设置热键:在编辑的时候输入(&F) 设置快捷键:选中菜单项--右键属性--S ...
- 菜单 & 工具栏 & 状态栏
MFC中ON_UPDATE_COMMAND_UI和ON_COMMAND消息区别 CCmdUI 加载状态栏 加载工具栏
- pyqt5 重启相同线程错误:QThread: Destroyed while thread is still running
背景: 把一个基于QObject的类的槽运行在另一个线程,我们可以用moveToThread的方法. 1 新建一个子线程类,编写槽函数和信号,MyClass *m_MyClass=new MyClas ...
- PyQt 5菜单和工具栏
QMainWindow类提供主要应用程序的窗口,有添加状态栏.工具栏.菜单栏等功能 状态栏 self.statusBar().showMessage('Ready') # 创建一个状态栏 # 状态栏显 ...
随机推荐
- [枫叶学院] Unity3d高级开发教程 工具集(一) 哈希列表——强大的自己定义数据集
在日常开发中.数据集合是我们不可缺少的重要工具之中的一个.在C#中,.Net Framework也为我们提供了种类繁多,功能多样的数据集工具.在此,我基于List<T> 和 HashTab ...
- Unicode data in a Unicode-only collation or ntext data cannot be sent to clients using DB-Library (such as ISQL) or ODBC version 3.7 or earlier
php 连接 sqlserver 时, 程序生成的sql语句, 如果在 sqlserver客户端执行时, 可以正确返回结果, 在程序中执行, 总返回 false, 打开调试也没有任何错误. 无意中发现 ...
- 【vue】父向子组件传参、子组件向父传参
1.父向子组件传参 App.vue为父,引入componetA组件之后,则可以在App.vue中使用标签(注意驼峰写法要改成componet-a写法,因为html对大小写不敏感,componenta与 ...
- 《metasploit渗透测试魔鬼训练营》学习笔记第七章--社会工程学
五.社工工程学 5.1社会工程系框架 5.1.1信息搜集 maltego是一个高度自动化的信息搜集工具,集成在BT5中,如果国内网络环境使用时 ...
- Kali-linux Gerix Wifi Cracker破解无线网络
Gerix Wifi Cracker是另一个aircrack图形用户界面的无线网络破解工具.本节将介绍使用该工具破解无线网络及创建假的接入点. 9.3.1 Gerix破解WEP加密的无线网络 在前面介 ...
- SublimeLinter插件对PHP语法检测不起作用的解决办法
系统:windows7+sublime3 1.安装sublimelinter ctrl+shift+p=>pi=>回车=>sublimelinter=>回车 2.安装好后进行配 ...
- Mybatis Plus启动注入 SQL 原理分析
1) 问题: xxxMapper 继承了 BaseMapper<T>, BaseMapper 中提供了通用的 CRUD 方法, 方法来源于 BaseMapper, 有方法就必须有 SQL, ...
- 【Step By Step】将Dotnet Core部署到Docker上
本教程的前提是,你已经在Linux服务器上已经成功的安装了Docker,我会大概介绍在此过程中用到的Docker命令,并不会介绍所有的Docker命令(因为我也不会). 一.在Docker中运行Dot ...
- node.js环境下写的vue项目
github地址:https://github.com/anxizhihai/JournalismProject.git
- python3爬虫-通过requests爬取图虫网
import requests from fake_useragent import UserAgent from requests.exceptions import Timeout from ur ...