PYQT基本配置记录(一)

news/2024/7/16 8:34:51 标签: pycharm, ide, python

文章目录

  • PYQT记录
    • 1、安装pyqt5
    • 2、使用设计师设计页面
    • 3、设计师常用功能
    • 4、布局设计,以计算器设计为例

PYQT记录

1、安装pyqt5

打开窗口进行安装

pip install pyqt5 pyqt5-tools

在这里插入图片描述

创建一个窗口

import sys

from PyQt5 import QtWidgets

app = QtWidgets.QApplication(sys.argv)
widget = QtWidgets.QWidget()
widget.resize(640, 480)
widget.setWindowTitle("demo")
widget.show()

exit(app.exec_())

在这里插入图片描述

添加外部工具,在设置中添加外部工具

在这里插入图片描述

每个的配置如下

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2、使用设计师设计页面

这里选则main window或者widget都可以,区别在于,main window多了一个菜单栏

在这里插入图片描述

编辑内容函数

在这里插入图片描述

链接并保存到事先准备好的文件夹

在这里插入图片描述

使用之前准备好的外部工具生成python代码

在这里插入图片描述

下面开始编写展示代码

import sys
import demo1
from PyQt5.QtWidgets import QApplication, QMainWindow

if __name__ == '__main__':
    app = QApplication(sys.argv) # 创建应用窗口
    mainWindow = QMainWindow() # 创建一个主窗口
    ui = demo1.Ui_Form() # 创建ui窗口
    ui.setupUi(mainWindow) # 调用setupUi在指定窗口(主窗口)中添加控件
    mainWindow.show() # 显示窗口
    sys.exit(app.exec_()) # 进入主循环

因为这里编写了按键点击会触发清空事件,所以效果就是点击按键后清空文本,效果如下

在这里插入图片描述

当然这是内部处理,实际上也可以直接通过编写逻辑代码来实现

3、设计师常用功能

页面布局及含义

在这里插入图片描述

较为常用的

在这里插入图片描述

首先关注几何位置,可以看到都有一个开始位置,然后高宽

在这里插入图片描述

这里我们,如果点击空白处,就是这个页面的高宽,当然这是初始化状态的,她还有一个限制高宽,一般是从0到一个很大的数,意思就是高宽可调,整个窗口的x,y位置是不可调的,只有单独控件的xy是可调的。

可以使用快捷键ctrl+r进行预览查看效果

在这里插入图片描述

对于可编辑文本的按键,我们总不想一直让他们是这种默认名字吧,就有想要改名的欲望,但要注意他有两个,一个是文本内容,另一个是在程序中的类名,而类名自然不能使用中文,只有文本名才可以使用中文。

在这里插入图片描述

4、布局设计,以计算器设计为例

使用布局方式进行布局

在这里插入图片描述

层级关系如下:

在这里插入图片描述

使用pyuic生成python代码

下面开始编写计算器程序,这次不使用信号和槽函数,直接使用已有的库,用最笨的方法,直接写连接函数

  • 将之前的初始化时间放到结构体初始化中
  • 注册各种事件的回调函数
  • 编写函数,其实主要是字符串处理函数
  • 使用eval函数对字符串进行计算,对非法输入进行排查
import sys
from PyQt5 import QtWidgets
from demo1 import Ui_Form

class Cacluate(QtWidgets.QMainWindow,Ui_Form): # 这里参数的取值要参考原本的设计师里面设定的参数
    def __init__(self):
        super(Cacluate, self).__init__() # 注册初始化事件
        self.setupUi(self)
        self.init()
        self.setWindowTitle("calc")

    def init(self):
        # 下面注册各种运算事件
        self.dell.clicked.connect(self.delete) # 删除
        self.clc.clicked.connect(self.clc_all) # 删除全部
        self.add.clicked.connect(self.jiafa) # 加法
        self.subtract.clicked.connect(self.jianfa) # 减法
        self.multiply.clicked.connect(self.chengfa) # 乘法
        self.division.clicked.connect(self.chufa) # 除法
        self.value.clicked.connect(self.jisuan) # 计算
        # 绑定基本按键
        self.num1.clicked.connect(self.a1)
        self.num2.clicked.connect(self.a2)
        self.num3.clicked.connect(self.a3)
        self.num4.clicked.connect(self.a4)
        self.num5.clicked.connect(self.a5)
        self.num6.clicked.connect(self.a6)
        self.num7.clicked.connect(self.a7)
        self.num8.clicked.connect(self.a8)
        self.num8.clicked.connect(self.a9)

    def a1(self):
        self.res_view.insert('1')
    def a2(self):
        self.res_view.insert('2')
    def a3(self):
        self.res_view.insert('3')
    def a4(self):
        self.res_view.insert('4')
    def a5(self):
        self.res_view.insert('5')
    def a6(self):
        self.res_view.insert("6")
    def a7(self):
        self.res_view.insert('7')
    def a8(self):
        self.res_view.insert('8')
    def a9(self):
        self.res_view.insert('9')
    def clc_all(self):
        val = self.res_view.text()
        self.res_view.setText(val[0:-1])
    def delete(self):
        self.res_view.setText("")
    def jiafa(self):
        self.res_view.insert('+')
    def jianfa(self):
        self.res_view.insert('-')
    def chengfa(self):
        self.res_view.insert('*')
    def chufa(self):
        self.res_view.insert('/')
    def jisuan(self):
        text = self.res_view.text()
        try:
            # result = eval(text)
            self.res_view.insert('\r\n'+'='+str(eval(text)))
        except:
            self.res_view.insert('语法错误')


if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    calc = Cacluate()
    calc.show()
    sys.exit(app.exec_())

效果如下:

在这里插入图片描述


http://www.niftyadmin.cn/n/980402.html

相关文章

.NET单元测试-入门

基于状态测试 在上一篇文章中&#xff0c;我们举了一个带返回值的例子&#xff0c;那么无返回值的情况下又该怎样写单元测试呢&#xff1f; 有如下代码&#xff1a; 1 public IList<string> Names new List<string>(); 2 3 public void Reset() 4 { 5 Names…

OPENMV配置记录(一)

文章目录1、刷写固件2、开始配置openmv3、图像获取与显示4、修改图像&#xff0c;获取像素&#xff0c;添加元素5、使用图像进行基本操作-颜色追踪6&#xff0c;识别码7、模版匹配8、通过比例的方法来求解距离9、组合使用正好回家带了一篇H7的板子&#xff0c;想着先把openmv部…

PS 如何附加增效工具.

编辑-首选项-增效工具&#xff0c;选择目标增效工具文件夹 转载于:https://www.cnblogs.com/acetaohai123/p/6579543.html

外部表简单实验

1环境准备 2基于数据泵引擎的外部表 3基于sql*loader引擎的外部表 转载于:https://www.cnblogs.com/myrunning/p/3978914.html

递归用法

转载于:https://www.cnblogs.com/moye8187/p/6579613.html

lua学习记录|CSDN创作打卡

文章目录1、vscode配置lua开发环境2、基本语法3、字符串4、函数5、table&#xff08;数组&#xff09;6、逻辑值7、选择结构8、循环结构1、vscode配置lua开发环境 下载需要的编译器&#xff1a; 官网下载 http://www.lua.org/home.html 点击这个进入下载&#xff08;可以看到他…

使用 awk for循环 和 数组 实现 去重功能:(sort 、uniq、tr 功能)

文章目录这个是我自己写的 全部关于 awk学习的目录导航 &#xff0c;感兴趣的可以看看。 本章直接使用 awk 中的for循环 和 数组 实现 去重 and 统计 功能&#xff01; 在学习之前&#xff0c;先来看一个知识点&#xff1a; 首先&#xff0c;我们将 变量a的值设为1&#xff0c…

170320网络编程 udpclient udpGroupClient

1.udp是无连接的协议 2.udpClient.java import java.awt.BorderLayout; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowEvent; import java.awt.event.WindowListener; import java.io.…