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

核桃派本地

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

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

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

# -*- coding: utf-8 -*-

# pyQT5 For WalnutPi

from PyQt5 import QtCore, QtGui, QtWidgets

classUi_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.translate
        MainWindow.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 ms

sys.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.mfbz.cn/a/619831.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

揭秘抖音快速涨1000粉的方法:巨量千川投流,真实粉丝引爆你的账号;怎么快速涨有效粉

在抖音这个热门社交平台上,拥有大量粉丝不仅能增加曝光度,还能带来更多的关注和互动。因此,许多用户都在寻找能够快速增粉的方法。本文将揭秘抖音怎么快速涨1000粉的方法,并介绍了一种利用巨量千川投流和真实粉丝的方式&#xff0…

开放式耳机什么品牌最好?2024五款新晋爆款产品推荐!

​如今的耳机市场天下三分,有线入耳式耳机、蓝牙无线入耳式耳机以及开放式耳机,传统的有线入耳式耳机戴着不稳就算了,线很容易揉成一团,看着就头大;无线入耳式的耳机,同样面临着戴着不稳的问题,…

Transformers 加速的一些常用技巧

Transformers 是一个强大的架构,但模型因其采用的自注意力机制,虽然能够有效地处理序列数据并捕获长距离依赖关系,但同时也容易导致在训练过程中出现OOM(Out of Memory,内存不足)或者达到GPU的运行时限制。…

RS8521XF功能和参数介绍及PDF资料

RS8521XF功能和参数介绍及PDF资料-公司新闻-配芯易-深圳市亚泰盈科电子有限公司 品牌: RUNIC(润石) 封装: SOT-23-5 描述: 零漂移,1uV Vos,350KHz,1通道运放 放大器数: 单路 增益带宽积(GBP): 350kHz 输入偏置电流(Ib): 1pA 压摆率(SR): 0.17V/us RS8521XF 是一款高性能的运算…

OBS插件--图片或视频源随着声音动态缩放

音效动态调整 应用此插件的源可以根据音效声音的高低进行动态的缩放。在本例中,我们在当前的场景里面添加了一个小喇叭的图片源,在这个图片源上引用这款滤镜插件,然后将VLC视频源的音效用于此插件的音效。设置完成后,场景中的小喇…

基于GD32的简易数字示波器(4)- 软件_GD32的keil5环境和串口下载

这期记录的是项目实战,做一个简易的数字示波器。 教程来源于嘉立创,帖子主要做学习记录,方便以后查看。 本期主要介绍GD32的keil5环境和串口下载。详细教程可观看下方链接。 软件-第1讲-工程模板新建_哔哩哔哩_bilibili 2.1 开发环境搭建 …

FebHost:什么是新西兰.NZ域名?

.nz域名是新西兰的顶级域名(TLD)。它是专门分配给新西兰的国家代码顶级域(ccTLD)。以 .nz 结尾的域名用于标识与新西兰或其居民相关的网站、电子邮件地址和其他在线资源。 .nz 域名由新西兰域名委员会管理。负责监督 .nz 域名的注…

[AutoSar]BSW_Diagnostic_005 bootloader跳转流程和配置

目录 关键词平台说明一、调度时序图总览二、P2*Server 和P2Server三、配置四、bootloader 设计 关键词 嵌入式、C语言、autosar、OS、BSW、UDS、diagnostic 平台说明 项目ValueOSautosar OSautosar厂商vector , EB芯片厂商TI 英飞凌编程语言C,C编译器…

2023愚人杯 )————被遗忘的反序列化

<?php# 当前目录中有一个txt文件哦 error_reporting(0); show_source(__FILE__); include("check.php");class EeE{public $text;public $eeee;public function __wakeup(){if ($this->text "aaaa"){echo lcfirst($this->text);}}public functi…

ansible -playbook运维工具、语法、数据结构、命令用法、触发器、角色

目录 配置文件 基本语法规则&#xff1a; YAML支持的数据结构 playbook核心元素 ansible-playbook用法&#xff1a; 触发器 特点&#xff1a; 角色&#xff1a; 习题&#xff1a; 配置文件 playbook配置文件使用yaml语法&#xff0c;YAML 是一门标记性语言,专门用来写配…

目标检测——印度车辆数据集

引言 亲爱的读者们&#xff0c;您是否在寻找某个特定的数据集&#xff0c;用于研究或项目实践&#xff1f;欢迎您在评论区留言&#xff0c;或者通过公众号私信告诉我&#xff0c;您想要的数据集的类型主题。小编会竭尽全力为您寻找&#xff0c;并在找到后第一时间与您分享。 …

C++中的complex

在 C 中&#xff0c;std::complex 是一个模板类&#xff0c;用于表示和操作复数。这个类是标准模板库&#xff08;STL&#xff09;的一部分&#xff0c;包含在 头文件中。std::complex 提供了一套丰富的功能&#xff0c;包括基本的算术运算、比较运算、数学函数等&#xff0c;使…

【微信小程序开发】flex布局在小程序开发项目中的应用详解

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

Hive JSON数据处理

Hive JSON数据处理 JSON&#xff08;JavaScript Object Notation&#xff09;文件格式是一种轻量级的数据交换格式&#xff0c;用于存储和传输结构化的数据。它基于JavaScript的语法&#xff0c;但是可以被多种编程语言所支持和解析&#xff0c;因此被广泛应用于各种场景。 J…

Spring Security 复盘

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

Python 全栈系列244 nginx upstream 负载均衡 踩坑日记

说明 最初是因为租用算力机(Python 全栈系列242 踩坑记录:租用算力机完成任务)&#xff0c;所以想着做一个负载均衡&#xff0c;然后多开一些服务&#xff0c;把配置写在nginx里面就好了。 一开始租用了一个3080起了一个服务&#xff0c;后来觉得速度不够快&#xff0c;再起了…

如何解决IntelliJ IDEA中pom.xml依赖项引发的安全漏洞黄线警告问题

背景 在开发过程中&#xff0c;当我们在pom.xml文件中添加依赖项时&#xff0c;经常会发现IntelliJ IDEA报出黄色警告线条&#xff0c;提示存在潜在的安全漏洞。警告的具体展现形式如下&#xff1a; 解决方案 首先&#xff0c;打开设置菜单界面&#xff0c;接着选择编辑器选…

【图解计算机网络】http1.1,http2.0,http3.0

http1.1&#xff0c;http2.0&#xff0c;http3.0 http1.1长连接管道传输缺点 http2.0头部压缩二进制格式并发传输服务端推送缺点 http3.0无队头阻塞快速建立连接连接迁移 http1.1 长连接 在http1.0的时候&#xff0c;一次http请求就要建立一次TCP连接&#xff0c;这一次的htt…

Vue3项目Easy云盘(二):文件列表+新建目录+文件重命名+文件上传

一、文件列表 1.封装全局组件Table.vue 因为Main.vue等都会用到文件列表table&#xff0c;所以直接封装成组件。 src/components/Table.vue <template><!-- 表格 --><div><el-tableref"dataTable":data"dataSource.list || []":h…

基于AIoTedge+ThingsKit物联网平台,实现办公室人员进出AI统计

在AIoT时代&#xff0c;智能办公已成为提升企业效率的关键。本期文章将带你了解如何利用AIoTedge结合ThingsKit物联网平台&#xff0c;实现办公室人员进出的智能统计。这不是简单的技术堆砌&#xff0c;而是一场关于AI与IoT融合的实战演示。&#x1f31f; 提示&#xff1a;AIoT…