在全志H616核桃派开发板上进行PyQt5的代码编写和运行

核桃派本地

在上一节我们通过Qt Designer设计了ui窗口并转换成了Python代码,由于是Python编程,因此我们可以在核桃派开发板打开Python代码进行编程。

在核桃派上推荐使用Thonny来打开编写Python文件, 使用请参考:Thonny IDE

打开上一节生成的window.py文件,在代码后面添加下方程序入口代码, 添加后完整代码如下:

# -*- coding: utf-8 -*-# pyQT5 For WalnutPifrom PyQt5 import QtCore, QtGui, QtWidgetsclassUi_MainWindow(object):
defsetupUi(self, MainWindow):MainWindow.setObjectName("MainWindow")MainWindow.resize(480,320)self.centralwidget = QtWidgets.QWidget(MainWindow)self.centralwidget.setObjectName("centralwidget")self.pushButton = QtWidgets.QPushButton(self.centralwidget)self.pushButton.setGeometry(QtCore.QRect(190,160,75,23))self.pushButton.setObjectName("pushButton")self.label = QtWidgets.QLabel(self.centralwidget)self.label.setGeometry(QtCore.QRect(190,90,91,16))self.label.setObjectName("label")MainWindow.setCentralWidget(self.centralwidget)self.menubar = QtWidgets.QMenuBar(MainWindow)self.menubar.setGeometry(QtCore.QRect(0,0,480,22))self.menubar.setObjectName("menubar")MainWindow.setMenuBar(self.menubar)self.statusbar = QtWidgets.QStatusBar(MainWindow)self.statusbar.setObjectName("statusbar")MainWindow.setStatusBar(self.statusbar)self.retranslateUi(MainWindow)QtCore.QMetaObject.connectSlotsByName(MainWindow)defretranslateUi(self, MainWindow):_translate = QtCore.QCoreApplication.translateMainWindow.setWindowTitle(_translate("MainWindow","WalnutPi"))self.pushButton.setText(_translate("MainWindow","PushButton"))self.label.setText(_translate("MainWindow","Hello WalnutPi"))#################
#   主程序代码   #
#################
import sys#【可选代码】允许Thonny远程运行
import os
os.environ["DISPLAY"]=":0.0"#【可选代码】解决2K以上分辨率显示器显示缺失问题
QtCore.QCoreApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling)#主程序入口,构建窗口并显示
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()#构建窗口对象
ui = Ui_MainWindow()#构建pyQT5设计的窗口对象
ui.setupUi(MainWindow)#初始化窗口
MainWindow.show()#显示窗口#【建议代码】允许终端通过ctrl+c中断窗口,方便调试
import signal
signal.signal(signal.SIGINT, signal.SIG_DFL)
timer = QtCore.QTimer()
timer.start(100)# You may change this if you wish.
timer.timeout.connect(lambda:None)# Let the interpreter run each 100 mssys.exit(app.exec_())#程序关闭时退出进程

在核桃派桌面的Thonny点击运行,可以看到弹出了我们上一节设计的第一个窗口。(终端警告提示可以忽略)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

也可以在终端通过python指令运行修改好的window.py文件,效果一样。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

点击关闭窗口可以关掉进程,如果是无关闭按钮的窗口可以通过终端按 Ctrl+C 组合键打断窗口进程。

提示

由于pyQT5夸代码平台兼容。所以在Windows本地的操作跟上面内容完全一样。

Thonny远程开发(基于Windows)

上面使用核桃派系统里面的Thonny IDE编程,同样我们可以使用Windows上的Thonny IDE远程到核桃派进行Python编程。核桃派系统出厂已经预装ssh服务,可以通过ssh远程控制。这个方法适合使用自己电脑远程开发。远程方法参考Python嵌入式编程里面:Thonny远程 内容,这里不再重复。

需要注意的是Thonny远程时务必加入下面代码才可正常运行:

# 允许Thonny远程运行
import os
os.environ["DISPLAY"]=":0.0"

远程打开核桃派的window.py文件(上面完整的代码),点击运行:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在核桃派开发板的桌面就弹出了该窗口。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

通过在Thonny主菜单运行–中断 或在下方终端按ctrl+c 即可退出窗口程序。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

通过3.5寸LCD显示

上面方法既可通过核桃派HDMI显示器显示,也可以通过3.5寸LCD显示。3.5寸显示屏使用说明:3.5寸触摸显示屏

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

无桌面系统运行pyQT5说明

无桌面系统需要开启进入 可使用鼠标的xterm终端 ,才能进入QT调试模式。

sudo systemctl enable lightdm.service

执行完需要重启生效:

sudoreboot

重启后自动登录pi,命令在左上角,可以看到鼠标,如下图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这时候就可以本地或远程运行pyQT5的python文件代码:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

下面指令可以退出此功能:

sudo systemctl disable lightdm.service

也是要重启生效,就返回普通终端模式了:

sudoreboot

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1421327.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Java并发编程:Thread原理解析

文章目录 一、java中的thread和操作系统中的Thread对应关系 一、java中的thread和操作系统中的Thread对应关系 在java中用户线程和内核线程是1:1的形式: 其中java层面创建的线程为用户线程,其对应的底层线程为内核线程。 Java生成线程的流程如下&#…

【JavaEE】【1.3 Servlet】1.3.3 HttpServletRequest的应用

Http报文结构 请求报文 HTTP的请求报文由四部分组成(请求行请求头部空行请求体): 请求行(Request Line)①②③: ① 请求方法(Method):要执行的HTTP操作,…

el-menu 保持展开点击不收缩 默认选择第一个菜单

<el-menu:default-openeds"[/system]" 数组 默认展开第一个:collapse"isCollapse"close"handleClose" 点击关闭的时候 让菜单打开 就可以实现保持展开效果ref"menus":unique-opened"true":active-text-color"se…

JVM 类的加载器分类与测试

文章目录 1. 类加载器父类说明2. 子父类加载器关系3. 具体类的加载器介绍3.1 引导类加载器3.2 扩展类加载器3.3 系统类加载器 4. 用户自定义类加载器5. 测试不同的类加载器 1. 类加载器父类说明 JVM 支持两种类型的类加载器&#xff0c;分别为引导类加载器&#xff08;Bootstr…

docker(四):数据卷

数据卷 卷的设计目的就是数据的持久化&#xff0c;完全独立于容器的生存周期&#xff0c;因此Docker不会在容器删除时删除其挂载的数据卷。 1、docker run docker run -it --privilegedtrue -v /宿主机绝对路径目录:/容器内目录 镜像名2、挂载注意事项 --privilegedtru…

Spring Security 复盘

1、什么Spring Security&#xff1f; Spring Security 是一种强大的框架&#xff0c;它在 Spring 生态系统中扮演着保护应用安全的关键角色。Spring Security 基于 Spring 框架&#xff0c;提供了一套 Web 应用安全性的完整解决方案。 2、认证 和 授权 1.什么是认证&#xff1…

基于JAVA的微信小程序二手车交易平台(源码)

博主介绍&#xff1a;✌程序员徐师兄、8年大厂程序员经历。全网粉丝15w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

uniapp 安卓证书导出成cer文件 查看公钥

// your_alias 换成 证书详情中的别名&#xff0c;your_keystore.keystore 改成自己的证书文件名 keytool -export -alias your_alias -file certificate.cer -keystore your_keystore.keystore双击生成的cer文件 可以查看到证书的详细信息 其中就包括证书的公钥

安捷伦E8363B详情资料e8363b矢量网络分析仪E8363B 40G

E8363B E8363B E8363B 品牌&#xff1a;Agilent 型号&#xff1a;E8363B PNA系列网络分析仪 频率范围&#xff1a;10MHz~40GHz 动态范围&#xff1a;123dB 主要特性与技术指标 #110 dB的动态范围&#xff0c;<0.006 dB的迹线噪声 #<26微秒/点的测量速度&#xff0c;32个…

定期更新与维护:技术与生活的同步律动

在这个数字化时代&#xff0c;科技的温暖之光照进了盲人朋友们的日常生活中&#xff0c;特别是那些辅助出行的应用程序&#xff0c;它们如同贴心的向导&#xff0c;引领着用户穿越城市的喧嚣与宁静。然而&#xff0c;要确保这些应用始终能够高效、安全地服务于盲人用户&#xf…

令牌桶算法:如何优雅地处理突发流量?

令牌桶算法的介绍 在网络流量控制和请求限流中&#xff0c;令牌桶算法是一种常用的策略。那么&#xff0c;令牌桶算法到底是什么呢&#xff1f;它的工作原理又是怎样的呢&#xff1f;让我们一起来探索一下。 令牌桶算法&#xff0c;顾名思义&#xff0c;就是有一个存放令牌的…

【VTKExamples::Rendering】第六期 TestFlatVersusGround

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 公众号:VTK忠粉 前言 本文分享VTK样例TestFlatVersusGround,希望对各位小伙伴有所帮助! 感悟:自身优秀很重要,让别人觉得你很优秀更重要! 感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步! …

云计算第十二课

安装虚拟机 第一步新建虚拟机 选择自定义安装 下一步 选择稍后安装操作系统 选择系统类型和版本 选择虚拟机文件路径&#xff08;建议每台虚拟机单独存放并且路径不要有中文&#xff09;点击下一步 选择bios下一步 选择虚拟机处理器内核数量 默认硬盘或者自行调大硬盘 选择虚…

【Java】:向上转型、向下转型和ClassCastException异常

目录 先用一个生动形象的例子来解释向上转型和向下转型 向上转型&#xff08;Upcasting&#xff09; 向下转型&#xff08;Downcasting&#xff09; 向上转型 概念 例子 发生向上转型的情况 1.子类对象赋值给父类引用 2.方法参数传递 3.返回值 向下转型 概念 注意…

Electron学习笔记(一)

文章目录 相关笔记笔记说明 一、轻松入门 1、搭建开发环境2、创建窗口界面3、调试主进程 二、主进程和渲染进程1、进程互访2、渲染进程访问主进程类型3、渲染进程访问主进程自定义内容4、渲染进程向主进程发送消息5、主进程向渲染进程发送消息6、多个窗口的渲染进程接收主进程发…

如何取消格式化SD卡并恢复丢失的数据?

在相机中格式化SD卡后&#xff0c;您将丢失卡上的所有文件。如果有恢复形成操作的选项&#xff0c;您可以轻松取回文件。然而&#xff0c;相机或任何其他设备中没有这样的选项。它无法直接取消格式化相机SD卡&#xff0c;但您仍然可以从格式化的SD卡中恢复文件。 为什么格式化后…

pycharm本地文件更新至虚拟机

tools–>deployment–>configuration root path的路径要跟远程路径对齐&#xff0c;方便后续运行 mapping映射&#xff0c;本地路径和远程路径 点击Browse 可以在右侧同步查看更新情况

Jmeter使用While控制器

1.前言 对于性能测试场景中&#xff0c;需要用”执行某个事物&#xff0c;直到一个条件停止“的概念时&#xff0c;While控制器控制器无疑是首选&#xff0c;但是在编写脚本时&#xff0c;经常会出现推出循环异常&#xff0c;获取参数异常等问题&#xff0c;下面总结两种常用的…

一文详解多模态智能体(LMAs)最新进展(核心组件/分类/评估/应用)

大型多模态智能体 文章链接&#xff1a;https://arxiv.org/pdf/2402.15116 github地址&#xff1a;https://github.com/jun0wanan/awesome-large-multimodal-agents 大语言模型&#xff08;LLMs&#xff09;在为基于文本的AI智能体提供动力方面取得了卓越的表现&#xff0c;赋…

微信小程序 17:小程序使用 npm 包和组件应用

目前&#xff0c;小程序中已经支持实用 npm 安装第三方包&#xff0c;从而提高小程序的开发效率&#xff0c;但是在小程序中使用 npm 包有三个限制&#xff1a; 不支持 Node.js内置库的包不支持依赖于浏览器内置对象的包不支持依赖于 C插件的包 Vant Weapp Vant Weapp是有赞…