designer使用生成程序简单示例

news/2024/10/11 14:38:42/

文章目录

  • 1.designer生成界面
    • (1)菜单栏与状态栏
      • (a)菜单栏
      • (b)状态栏
        • 1).移除菜单栏
        • 2).移除菜单栏效果
        • 3).移除状态栏
        • 4).移除状态栏效果
    • (2)编辑界面
  • 2.从ui文件转成py文件
  • 3.编写main文件运行程序

    本章将以一个很简单的程序示例,展示一下designer.exe生成程序的方便快捷。

1.designer生成界面

    Pycharm打开designer.exe显示的界面如下图所示,可以选择的方式有五种,但一般会选择Main Window或者Widget,我个人习惯使用Main Window,是因为Main Window生成界面的同时可以选择是否包含菜单栏、状态栏等,但风险与收益并存,功能越多也意味着其所需要的内存也会更多。
    Pycharm选择Main Window,点击创建:

创建完成,将会显示一个新的软件界面,如下图所示:
在这里插入图片描述

(1)菜单栏与状态栏

    如之前所示,Main Window可创建菜单栏、状态栏,从刚创建的界面就可以看出来,这里暂时只简单介绍下菜单栏、状态栏的位置。

(a)菜单栏

    菜单栏是在软件界面的最上方,一般用于设置文件、编辑、设置等功能,与designer.exe上方显示的功能界面一致。

(b)状态栏

    状态栏与菜单栏作为孪生兄弟,位置相反,状态栏是在软件界面的最下方,一般用于显示刚打开的文件位置在哪、时间、运行状态等。

    介绍完了菜单栏、状态栏,那么就有新问题了,虽然选择了Main Window,但是不想要菜单栏、状态栏,那么可不可以去掉呢?bingo!当然是可以的,只需要在菜单栏、状态栏位置分别右键移除就可以了。

1).移除菜单栏
2).移除菜单栏效果
3).移除状态栏
4).移除状态栏效果

(2)编辑界面

    简单案例主打的就是简单,这一节用一个Label标签控件和一个PushButton按钮控件实现点击按钮之后标签的数字自增1,那让我们真正开始与designer.exe愉快的玩耍吧!
    按住左侧Push Button按钮控件向软件界面拖拽就可以生成一个PushButton,如下图所示:
在这里插入图片描述
在这里插入图片描述
    同样的,按住左侧Label标签控件向软件界面拖拽就可以生成一个Label,如下图所示:
在这里插入图片描述
在这里插入图片描述
    要想查看效果,需要进行预览,点击菜单栏的窗体下的预览选项,就可以进行预览:
在这里插入图片描述

    预览效果:
在这里插入图片描述

    可能有的小伙伴就得问了,预览窗体怎么比编辑的界面小了很多,不符合预览这个含义了都,至于如何看到一样大小的界面,请保持好奇心继续向下浏览吧。
    好的,到这里,小程序的控件界面就完成啦,给自己比个赞吧,记得保存哦,我们这里保存命名为win.ui文件:
在这里插入图片描述

2.从ui文件转成py文件

    右键刚才创建的ui文件所在的文件夹,选择用Pycharm打开,我们需要生成ui文件对应的py文件,右键选择External Tools中的Pyuic5工具,将会在文件夹下生成win.py:

在这里插入图片描述
    这里没有External Tools中的Pyuic5工具的,直接在win.ui所在文件夹路径输入cmd然后输入pyuic5 -o win.py win.ui
    External Tools中的Pyuic5工具设置方法在我的另一篇博客:Pycharm里设置关于designer.exe以及pyuic5.exe的外部工具

3.编写main文件运行程序

    前面的步骤完成了界面的绘制,界面文件转换成可以执行的python文件,但是界面文件不是程序的运行主文件,还需要再写一个主文件对界面文件进行调用才可以显示,正如大家虽然都是小帅哥、小美女,但是也还需要穿衣服才能出门一样。那就让我们看看可以穿出门的衣服如何编织!
    选中文件夹,右键新建python文件,命名为main文件(命名为其他的名字也是可以正常运行的,但是为了规范化,建议命名为main):


创建完成后,复制一下代码到你的main文件中:

python">import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
from win import Ui_MainWindowclass Window(QMainWindow, Ui_MainWindow):def __init__(self):super(Window, self).__init__()self.setupUi(self)if __name__ == '__main__':      app = QApplication(sys.argv)mywin = Window()mywin.show()sys.exit(app.exec_())

    需要注意下第三行代码:from win import Ui_MainWindow这里的win是你的ui文件转换成py文件的名字,后面的Ui_MainWindow是你的ui文件转换成py文件后里面的一个类,让我们看下这个类吧,打开win.py一览究竟:
    可以发现,文件里写明了我们刚创建的按钮和标签控件。
在这里插入图片描述
    步骤既然都完成了,那就运行main.py看一下吧,光看不练假把式,运行结果如下:
    可以发现界面正常显示了,并且有我们创建的两个控件。在这里插入图片描述
    好奇宝宝又出现了,我刚才创建的界面可是比这个显示的界面大了很多,为啥显示的这个界面这么小呢???这个问题呀,在于电脑屏幕的分辨率大家一般设置的都不是100%,而是150%,所以就会比我们运行现实的界面大了很多,那难道这个问题需要需要修改分辨率才可以解决吗?当然也不是,哪怕修改了自己的分辨率,日后分享给其他人使用,难道还要再改?所以为了避免这种无意义式的劳动,PyQt5提供了一条针对分辨率问题导致运行界面不相符的问题,代码如下:

python">QtCore.QCoreApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling) 

    那么完整的main文件代码如下:

python">import sys
from PyQt5 import QtCore
from PyQt5.QtWidgets import QApplication, QMainWindow
from win import Ui_MainWindowclass Window(QMainWindow, Ui_MainWindow):def __init__(self):super(Window, self).__init__()self.setupUi(self)if __name__ == '__main__':QtCore.QCoreApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling)app = QApplication(sys.argv)mywin = Window()mywin.show()sys.exit(app.exec_())

    再次运行看下效果吧!
在这里插入图片描述
    Perfect!程序运行成功了,也是给提供了情绪价值了有木有!
    好啦,界面都可以正常显示了,那么该干正事了,设置点击按钮正常标签数字自增1。
    让我们来梳理一下程序完成的设计思路,首先label的显示需要是数字,然后按钮触发的应该是函数,函数的功能则是让数字自增1并且自增完还要让label显示。
    这里需要注意的是:
    ①label显示的是字符串str,所以在显示数字之前需要将int格式转换成str格式
    ②PyQt5的变量、函数可以通过添加self进行调用,通俗易懂点解释,就是类似全局变量,只要加上了self,在class里都可以调用。

python">import sys
from PyQt5 import QtCore
from PyQt5.QtWidgets import QApplication, QMainWindow
from win import Ui_MainWindowclass Window(QMainWindow, Ui_MainWindow):def __init__(self):super(Window, self).__init__()self.setupUi(self)self.label_num = 0self.label.setText(str(self.label_num))self.pushButton.clicked.connect(self.num_add)def num_add(self):self.label_num = self.label_num +1self.label.setText(str(self.label_num))if __name__ == '__main__':QtCore.QCoreApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling)app = QApplication(sys.argv)mywin = Window()mywin.show()sys.exit(app.exec_())

运行界面看看效果吧,可以看到点击按钮后,标签的数字会自增1,运行成功。


http://www.ppmy.cn/news/1537497.html

相关文章

linux中缓存,在kafka上应用总结

linux中的缓存 页缓存 pagecatch(读缓存用于提供快速读)块缓存(用于提供其他设备快速写)当对读缓存读的时候,修改了读的数据,页缓存就会被标记为脏数据,等到写的时候它会向块缓存同步数据&…

大佬,简单解释下“嵌入式软件开发”和“嵌入式硬件开发”的区别

在开始前刚好我有一些资料,是我根据网友给的问题精心整理了一份「嵌入式的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!!首先,嵌入式硬…

Maven 高级之分模块设计与继承、聚合

在软件开发中,随着项目规模的扩大,代码量和复杂度不断增加,传统的一体化开发模式逐渐暴露出诸多问题。为了解决这些问题,模块化开发应运而生,而 Maven 正是模块化开发的利器,它提供的继承和聚合机制为构建和…

产品经理内容分享(二):AI产品经理的入门路线图

引言 想象这样一个场景:早晨的阳光穿透窗帘,投射在新一代智能机器人上,它正静静等待着你的第一个命令开始全新的一天。这样的场景听起来像是科幻小说里的情节,但实际上,这正是AI产品经理们工作的成果。如果你对这样的…

如何从U盘恢复已删除的文件

丢失重要文件可能是一场噩梦,感觉就像你内心死了一样。但是,你在 U 盘中备份了重要数据,因此你不会担心丢失数据。现在,猜猜怎么了?你也丢失了 U 盘中的文件。它可能被错误删除,或者你在没有检查的情况下格…

PyQt入门指南八 多线程编程入门

在PyQt应用程序中,多线程编程是非常重要的,因为它可以防止GUI界面在执行耗时操作时冻结。Python的threading模块和PyQt的QThread类都可以用来实现多线程,但在PyQt中,推荐使用QThread,因为它更好地与Qt的事件循环集成。…

LLM prompt提示设计与优化

参看: https://help.aliyun.com/zh/model-studio/use-cases/prompt-engineering-guide?spma2c4g.11186623.0.0.136d55ceDnHbPK https://tenten.co/learning/co-star-tidd-ec-prompt-framework/ 大语言模型中 Prompt 的设计和优化方法,包括使用 Prompt 框…

【电路笔记】-求和运算放大器

求和运算放大器 文章目录 求和运算放大器1、概述2、反相求和放大器3、同相求和放大器4、减法放大器5、应用5.1 音频混合器5.2 数模转换器 (DAC)6、总结1、概述 在我们之前有关运算放大器的大部分文章中,仅将一个输入应用于反相或非反相运算放大器的输入。在本文中,将讨论一种…