文案生成 python_懒人专用!十行Python代码即可生成GUI界面

有过tkinter使用经验的朋友们都会感叹,用tk控件来设计一个优美的界面,真的好难啊!既要让界面漂亮,又要让设计好每个控件的大小合适,还要兼顾每个控件的摆放位置,费时费力非常的繁琐。

小编在浏览网页的时候,突然发现一个GUI神器,叫做Gooey,号称能把任何控制台应用程序转换为非常美观的的GUI应用程序。获赞9000颗星,非常厉害。

1 如何安装

对于Gooey的安装非常的方便,大家只需要在终端用pip安装即可。pip3 install Gooey

对于python3.5以上都是支持的,大家可以放心的安装。这个库安装比较慢,大家可以用清华的镜像路径安装。

pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple Gooey

2 如何使用

那么,Gooey要如何使用呢?我们首先来看一下一个小小的程序:

上图程序中,我们从Gooey库中导入了Gooey函数和GooeyParser类;

Gooey函数作为装饰器来进行全局变量的设置;

GooeyParser类用来添加我们所需要的控件信息,并进行解析;

这里,由于用到了装饰器的知识点,所以为大家简单的介绍一下装饰器的内容。

3啥是装饰器

装饰器是Python特有的一个概念,用的好事半功倍。很多牛逼的开源库里面都大量的用装饰器,可以节省很多重复的代码,高效美观,非常Pythonic。

装饰器本质上也是一个python的函数,它可以让其他的函数在不改变的情况下,增加了额外功能。打个比方说我们都穿袜子,袜子可以保暖,可以吸汗,但是有了袜子还不能走路,于是我们在外面穿了鞋子,在不影响袜子的作用情况下,我们有了鞋子帮助我们走路。

用个小例子来看一下装饰器的作用:

上述的函数中,我们可以看到,装饰器函数debug;

通过传入say函数,将say函数包裹起来;

然后返回包裹处理后的wrapper函数;

最后,程序执行的结果可以看出,在没有改变say函数的基础上,输出了装饰器添加的功能;

如果大家想对装饰器有更深入的了解,可以去以前写的(4 源码解读

我们回到Gooey函数中设置了“program_name”、“language”等参数,它可以设置更多的参数,例如初始界面的大小,本地图标的地址等等。

对于GooeyParser类,它的用法类似于argparse库,上述的函数中,我们添加了一个文件选择的控件和日期选择的控件,此外,还有Dropdown(下拉框)、Counter(计数器)等控件。

函数运行的界面如下图所示:

可以看到,程序只需要不断的添加我们需要的控件,程序便会自动帮助我们美化好控件的位置,而且,Gooey提供的控件更加的美观,更加的编辑,我们只需要几行代码就可以创建一个GUI控件,不需要再设置控件大小,控件的位置,等等复杂的操作。

5实战运用

那么,Gooey如何和我们自己写的程序相结合呢?下面,小编结合一个应用小案例,来秀一下。用的案例是前几天发的(,小编利用Gooey和Instagram滤镜来为大家进行展示,程序如下图所示。

上述函数中,我们选择了文件选择框的控件,从本地选择图片;

然后利用“Dropdown”控件,来选择滤镜的类型;

利用“DirChooser”控件来选择图片的保存路径;

我们选择gotham滤镜时,程序便执行我们的gotham滤镜程序,处理图片,将处理后的图片保存到“DirChooser”选择的地址。

有兴趣的同学可以读一下这个库的源码,其实它把wxpython进行了进一步的封装,底层还是调用wxpython。但是作者封装了之后使用起来确实简便很多,有兴趣的小伙伴赶紧试一下。

end

近期十大热门:

每个程序员都是从菜鸟开始成长起来的,没有人一开始就是程序员高手。菜鸟爱编程,专注于分享趣味的编程技巧,不限于Java, Python ,Go, Javascript等语言,让菜鸟爱上编程,进阶成为高手。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'aaa.ui' # # Created by: PyQt5 UI code generator 5.11.3 # # WARNING! All changes made in this file will be lost! import sys, os from PyQt5 import QtCore, QtWidgets, QtGui from PyQt5.QtCore import * from PyQt5.QtWidgets import * from PyQt5.QtGui import * from PyQt5 import QtCore, QtGui, QtWidgets class U_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(1204, 836) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(MainWindow.sizePolicy().hasHeightForWidth()) MainWindow.setSizePolicy(sizePolicy) self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.tableWidget = QtWidgets.QTableWidget(self.centralwidget) self.tableWidget.setGeometry(QtCore.QRect(80, 240, 1041, 371)) self.tableWidget.setAutoScrollMargin(9) self.tableWidget.setRowCount(9) self.tableWidget.setColumnCount(8) self.tableWidget.setObjectName("tableWidget") item = QtWidgets.QTableWidgetItem() self.tableWidget.setVerticalHeaderItem(0, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setVerticalHeaderItem(1, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setVerticalHeaderItem(2, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setVerticalHeaderItem(3, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setVerticalHeaderItem(4, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setVerticalHeaderItem(5, item) item = QtWidgets.QTableWidgetItem() self.tableWidget.setVerticalHeaderItem(6, item) item = Q
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值