designer使用生成程序简单示例


    本章将以一个很简单的程序示例,展示一下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文件中:

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
from win import Ui_MainWindow

class 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提供了一条针对分辨率问题导致运行界面不相符的问题,代码如下:

QtCore.QCoreApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling) 

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

import sys
from PyQt5 import QtCore
from PyQt5.QtWidgets import QApplication, QMainWindow
from win import Ui_MainWindow

class 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里都可以调用。

import sys
from PyQt5 import QtCore
from PyQt5.QtWidgets import QApplication, QMainWindow
from win import Ui_MainWindow

class Window(QMainWindow, Ui_MainWindow):
    def __init__(self):
        super(Window, self).__init__()
        self.setupUi(self)

        self.label_num = 0
        self.label.setText(str(self.label_num))
        self.pushButton.clicked.connect(self.num_add)

    def num_add(self):
        self.label_num = self.label_num +1
        self.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,运行成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值