python绘制界面,起初想的很简单,但是在编写的过程却遇到了很多麻烦。就让我从头说起吧~
准备工作:
选择了python2.7.5版本,Tkinter绘制界面模块
遇到问题:
运行python Tkinter (python2版本tkinter模块首字母需要大写) 时,出现报错:没有Tkinter模块,上网查询,知道在windows里自带Tkinter版本,但是在linux(centos7)里面没有Tkinter模块,因此就需要 yum install -y tkinter 和 yum install -y tk-devel 但是当我安装好centos7后,执行上述两个命令时,报错,于是上网查找原因。
解决方法:
解决安装CentOS7后发现yum无法使用
首先以root用户登录
输入命令: vim /etc/sysconfig/network-scripts/ifcfg-ens33
按 i 进入编辑模式,
将ONBOOT改为yes, 然后一定要重启,就可以了yum了。紧接着:
[root@localhost ~]# yum install -y tkinter
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.tuna.tsinghua.edu.cn
* updates: mirrors.tuna.tsinghua.edu.cn
正在解决依赖关系
--> 正在检查事务
---> 软件包 tkinter.x86_64.0.2.7.5-80.el7_6 将被 安装
--> 正在处理依赖关系 python = 2.7.5-80.el7_6,它被软件包 tkinter-2.7.5-80.el7_6.x86_64 需要
--> 正在处理依赖关系 libtk8.5.so()(64bit),它被软件包 tkinter-2.7.5-80.el7_6.x86_64 需要
--> 正在处理依赖关系 libtcl8.5.so()(64bit),它被软件包 tkinter-2.7.5-80.el7_6.x86_64 需要
--> 正在处理依赖关系 libTix.so()(64bit),它被软件包 tkinter-2.7.5-80.el7_6.x86_64 需要
--> 正在检查事务
---> 软件包 python.x86_64.0.2.7.5-76.el7 将被 升级
---> 软件包 python.x86_64.0.2.7.5-80.el7_6 将被 更新
--> 正在处理依赖关系 python-libs(x86-64) = 2.7.5-80.el7_6,它被软件包 python-2.7.5-80.el7_6.x86_64 需要
---> 软件包 tcl.x86_64.1.8.5.13-8.el7 将被 安装
---> 软件包 tix.x86_64.1.8.4.3-12.el7 将被 安装
---> 软件包 tk.x86_64.1.8.5.13-6.el7 将被 安装
--> 正在检查事务
---> 软件包 python-libs.x86_64.0.2.7.5-76.el7 将被 升级
---> 软件包 python-libs.x86_64.0.2.7.5-80.el7_6 将被 更新
--> 解决依赖关系完成
依赖关系解决
=======================================================================================================================================================================================
Package 架构 版本 源 大小
=======================================================================================================================================================================================
正在安装:
tkinter x86_64 2.7.5-80.el7_6 updates 326 k
为依赖而安装:
tcl x86_64 1:8.5.13-8.el7 base 1.9 M
tix x86_64 1:8.4.3-12.el7 base 254 k
tk x86_64 1:8.5.13-6.el7 base 1.4 M
为依赖而更新:
python x86_64 2.7.5-80.el7_6 updates 95 k
python-libs x86_64 2.7.5-80.el7_6 updates 5.6 M
事务概要
=======================================================================================================================================================================================
安装 1 软件包 (+3 依赖软件包)
升级 ( 2 依赖软件包)
总下载量:9.6 M
Downloading packages:
updates/7/x86_64/prestodelta | 829 kB 00:00:01
Delta RPMs reduced 5.7 M of updates to 469 k (92% saved)
(1/6): python-2.7.5-76.el7_2.7.5-80.el7_6.x86_64.drpm | 67 kB 00:00:00
警告:/var/cache/yum/x86_64/7/base/packages/tix-8.4.3-12.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
tix-8.4.3-12.el7.x86_64.rpm 的公钥尚未安装
(2/6): tix-8.4.3-12.el7.x86_64.rpm | 254 kB 00:00:00
(3/6): python-libs-2.7.5-76.el7_2.7.5-80.el7_6.x86_64.drpm | 403 kB 00:00:00
tkinter-2.7.5-80.el7_6.x86_64.rpm 的公钥尚未安装
(4/6): tkinter-2.7.5-80.el7_6.x86_64.rpm | 326 kB 00:00:00
(5/6): tk-8.5.13-6.el7.x86_64.rpm | 1.4 MB 00:00:01
(6/6): tcl-8.5.13-8.el7.x86_64.rpm | 1.9 MB 00:00:01
Finishing delta rebuilds of 2 package(s) (5.7 M)
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
总计 536 kB/s | 4.3 MB 00:00:08
从 file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 检索密钥
导入 GPG key 0xF4A80EB5:
用户ID : "CentOS-7 Key (CentOS 7 Official Signing Key) <security@centos.org>"
指纹 : 6341 ab27 53d7 8a78 a7c2 7bb1 24c6 a8a7 f4a8 0eb5
软件包 : centos-release-7-6.1810.2.el7.centos.x86_64 (@anaconda)
来自 : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
正在安装 : 1:tcl-8.5.13-8.el7.x86_64 1/8
正在安装 : 1:tk-8.5.13-6.el7.x86_64 2/8
正在安装 : 1:tix-8.4.3-12.el7.x86_64 3/8
正在更新 : python-libs-2.7.5-80.el7_6.x86_64 4/8
正在更新 : python-2.7.5-80.el7_6.x86_64 5/8
正在安装 : tkinter-2.7.5-80.el7_6.x86_64 6/8
清理 : python-2.7.5-76.el7.x86_64 7/8
清理 : python-libs-2.7.5-76.el7.x86_64 8/8
验证中 : 1:tcl-8.5.13-8.el7.x86_64 1/8
验证中 : python-libs-2.7.5-80.el7_6.x86_64 2/8
验证中 : python-2.7.5-80.el7_6.x86_64 3/8
验证中 : tkinter-2.7.5-80.el7_6.x86_64 4/8
验证中 : 1:tix-8.4.3-12.el7.x86_64 5/8
验证中 : 1:tk-8.5.13-6.el7.x86_64 6/8
验证中 : python-2.7.5-76.el7.x86_64 7/8
验证中 : python-libs-2.7.5-76.el7.x86_64 8/8
已安装:
tkinter.x86_64 0:2.7.5-80.el7_6
作为依赖被安装:
tcl.x86_64 1:8.5.13-8.el7 tix.x86_64 1:8.4.3-12.el7 tk.x86_64 1:8.5.13-6.el7
作为依赖被升级:
python.x86_64 0:2.7.5-80.el7_6 python-libs.x86_64 0:2.7.5-80.el7_6
完毕!
[root@localhost ~]# yum install -y tk-devel
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.cqu.edu.cn
* extras: mirrors.cqu.edu.cn
* updates: mirror.lzu.edu.cn
正在解决依赖关系
--> 正在检查事务
---> 软件包 tk-devel.x86_64.1.8.5.13-6.el7 将被 安装
--> 正在处理依赖关系 tcl-devel = 1:8.5.13,它被软件包 1:tk-devel-8.5.13-6.el7.x86_64 需要
--> 正在处理依赖关系 libXft-devel,它被软件包 1:tk-devel-8.5.13-6.el7.x86_64 需要
--> 正在检查事务
---> 软件包 libXft-devel.x86_64.0.2.3.2-2.el7 将被 安装
--> 正在处理依赖关系 pkgconfig(xrender),它被软件包 libXft-devel-2.3.2-2.el7.x86_64 需要
--> 正在处理依赖关系 pkgconfig(freetype2),它被软件包 libXft-devel-2.3.2-2.el7.x86_64 需要
--> 正在处理依赖关系 pkgconfig(fontconfig),它被软件包 libXft-devel-2.3.2-2.el7.x86_64 需要
---> 软件包 tcl-devel.x86_64.1.8.5.13-8.el7 将被 安装
--> 正在检查事务
---> 软件包 fontconfig-devel.x86_64.0.2.13.0-4.3.el7 将被 安装
--> 正在处理依赖关系 pkgconfig(uuid),它被软件包 fontconfig-devel-2.13.0-4.3.el7.x86_64 需要
--> 正在处理依赖关系 pkgconfig(expat),它被软件包 fontconfig-devel-2.13.0-4.3.el7.x86_64 需要
---> 软件包 freetype-devel.x86_64.0.2.8-12.el7_6.1 将被 安装
--> 正在处理依赖关系 freetype = 2.8-12.el7_6.1,它被软件包 freetype-devel-2.8-12.el7_6.1.x86_64 需要
--> 正在处理依赖关系 pkgconfig(zlib),它被软件包 freetype-devel-2.8-12.el7_6.1.x86_64 需要
--> 正在处理依赖关系 pkgconfig(libpng),它被软件包 freetype-devel-2.8-12.el7_6.1.x86_64 需要
---> 软件包 libXrender-devel.x86_64.0.0.9.10-1.el7 将被 安装
--> 正在检查事务
---> 软件包 expat-devel.x86_64.0.2.1.0-10.el7_3 将被 安装
---> 软件包 freetype.x86_64.0.2.8-12.el7 将被 升级
---> 软件包 freetype.x86_64.0.2.8-12.el7_6.1 将被 更新
---> 软件包 libpng-devel.x86_64.2.1.5.13-7.el7_2 将被 安装
---> 软件包 libuuid-devel.x86_64.0.2.23.2-59.el7_6.1 将被 安装
--> 正在处理依赖关系 libuuid = 2.23.2-59.el7_6.1,它被软件包 libuuid-devel-2.23.2-59.el7_6.1.x86_64 需要
---> 软件包 zlib-devel.x86_64.0.1.2.7-18.el7 将被 安装
--> 正在检查事务
---> 软件包 libuuid.x86_64.0.2.23.2-59.el7 将被 升级
--> 正在处理依赖关系 libuuid = 2.23.2-59.el7,它被软件包 libmount-2.23.2-59.el7.x86_64 需要
--> 正在处理依赖关系 libuuid = 2.23.2-59.el7,它被软件包 libblkid-2.23.2-59.el7.x86_64 需要
--> 正在处理依赖关系 libuuid = 2.23.2-59.el7,它被软件包 util-linux-2.23.2-59.el7.x86_64 需要
---> 软件包 libuuid.x86_64.0.2.23.2-59.el7_6.1 将被 更新
--> 正在检查事务
---> 软件包 libblkid.x86_64.0.2.23.2-59.el7 将被 升级
---> 软件包 libblkid.x86_64.0.2.23.2-59.el7_6.1 将被 更新
---> 软件包 libmount.x86_64.0.2.23.2-59.el7 将被 升级
---> 软件包 libmount.x86_64.0.2.23.2-59.el7_6.1 将被 更新
---> 软件包 util-linux.x86_64.0.2.23.2-59.el7 将被 升级
---> 软件包 util-linux.x86_64.0.2.23.2-59.el7_6.1 将被 更新
--> 正在处理依赖关系 libsmartcols = 2.23.2-59.el7_6.1,它被软件包 util-linux-2.23.2-59.el7_6.1.x86_64 需要
--> 正在检查事务
---> 软件包 libsmartcols.x86_64.0.2.23.2-59.el7 将被 升级
---> 软件包 libsmartcols.x86_64.0.2.23.2-59.el7_6.1 将被 更新
--> 解决依赖关系完成
依赖关系解决
=======================================================================================================================================================================================
Package 架构 版本 源 大小
=======================================================================================================================================================================================
正在安装:
tk-devel x86_64 1:8.5.13-6.el7 base 488 k
为依赖而安装:
expat-devel x86_64 2.1.0-10.el7_3 base 57 k
fontconfig-devel x86_64 2.13.0-4.3.el7 base 138 k
freetype-devel x86_64 2.8-12.el7_6.1 updates 447 k
libXft-devel x86_64 2.3.2-2.el7 base 19 k
libXrender-devel x86_64 0.9.10-1.el7 base 17 k
libpng-devel x86_64 2:1.5.13-7.el7_2 base 122 k
libuuid-devel x86_64 2.23.2-59.el7_6.1 updates 91 k
tcl-devel x86_64 1:8.5.13-8.el7 base 165 k
zlib-devel x86_64 1.2.7-18.el7 base 50 k
为依赖而更新:
freetype x86_64 2.8-12.el7_6.1 updates 380 k
libblkid x86_64 2.23.2-59.el7_6.1 updates 181 k
libmount x86_64 2.23.2-59.el7_6.1 updates 182 k
libsmartcols x86_64 2.23.2-59.el7_6.1 updates 140 k
libuuid x86_64 2.23.2-59.el7_6.1 updates 82 k
util-linux x86_64 2.23.2-59.el7_6.1 updates 2.0 M
事务概要
=======================================================================================================================================================================================
安装 1 软件包 (+9 依赖软件包)
升级 ( 6 依赖软件包)
总下载量:4.5 M
Downloading packages:
Delta RPMs reduced 2.8 M of updates to 1.1 M (60% saved)
(1/16): freetype-2.8-12.el7_2.8-12.el7_6.1.x86_64.drpm | 27 kB 00:00:01
(2/16): libblkid-2.23.2-59.el7_2.23.2-59.el7_6.1.x86_64.drpm | 75 kB 00:00:01
(3/16): libsmartcols-2.23.2-59.el7_2.23.2-59.el7_6.1.x86_64.drpm | 75 kB 00:00:00
(4/16): libmount-2.23.2-59.el7_2.23.2-59.el7_6.1.x86_64.drpm | 75 kB 00:00:00
(5/16): util-linux-2.23.2-59.el7_2.23.2-59.el7_6.1.x86_64.drpm | 898 kB 00:00:00
(6/16): freetype-devel-2.8-12.el7_6.1.x86_64.rpm | 447 kB 00:00:00
(7/16): fontconfig-devel-2.13.0-4.3.el7.x86_64.rpm | 138 kB 00:00:00
(8/16): libuuid-2.23.2-59.el7_6.1.x86_64.rpm | 82 kB 00:00:00
(9/16): libXft-devel-2.3.2-2.el7.x86_64.rpm | 19 kB 00:00:00
(10/16): libuuid-devel-2.23.2-59.el7_6.1.x86_64.rpm | 91 kB 00:00:00
(11/16): expat-devel-2.1.0-10.el7_3.x86_64.rpm | 57 kB 00:00:01
(12/16): tcl-devel-8.5.13-8.el7.x86_64.rpm | 165 kB 00:00:00
(13/16): zlib-devel-1.2.7-18.el7.x86_64.rpm | 50 kB 00:00:00
(14/16): tk-devel-8.5.13-6.el7.x86_64.rpm | 488 kB 00:00:00
(15/16): libXrender-devel-0.9.10-1.el7.x86_64.rpm | 17 kB 00:00:01
(16/16): libpng-devel-1.5.13-7.el7_2.x86_64.rpm | 122 kB 00:00:00
Finishing delta rebuilds of 3 package(s) (2.3 M)
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
总计 414 kB/s | 2.8 MB 00:00:06
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
正在更新 : libuuid-2.23.2-59.el7_6.1.x86_64 1/22
正在更新 : libblkid-2.23.2-59.el7_6.1.x86_64 2/22
正在安装 : zlib-devel-1.2.7-18.el7.x86_64 3/22
正在安装 : 2:libpng-devel-1.5.13-7.el7_2.x86_64 4/22
正在更新 : libmount-2.23.2-59.el7_6.1.x86_64 5/22
正在安装 : libuuid-devel-2.23.2-59.el7_6.1.x86_64 6/22
正在安装 : 1:tcl-devel-8.5.13-8.el7.x86_64 7/22
正在更新 : freetype-2.8-12.el7_6.1.x86_64 8/22
正在安装 : freetype-devel-2.8-12.el7_6.1.x86_64 9/22
正在更新 : libsmartcols-2.23.2-59.el7_6.1.x86_64 10/22
正在安装 : libXrender-devel-0.9.10-1.el7.x86_64 11/22
正在安装 : expat-devel-2.1.0-10.el7_3.x86_64 12/22
正在安装 : fontconfig-devel-2.13.0-4.3.el7.x86_64 13/22
正在安装 : libXft-devel-2.3.2-2.el7.x86_64 14/22
正在安装 : 1:tk-devel-8.5.13-6.el7.x86_64 15/22
正在更新 : util-linux-2.23.2-59.el7_6.1.x86_64 16/22
清理 : util-linux-2.23.2-59.el7.x86_64 17/22
清理 : libmount-2.23.2-59.el7.x86_64 18/22
清理 : libblkid-2.23.2-59.el7.x86_64 19/22
清理 : libuuid-2.23.2-59.el7.x86_64 20/22
清理 : libsmartcols-2.23.2-59.el7.x86_64 21/22
清理 : freetype-2.8-12.el7.x86_64 22/22
验证中 : libXft-devel-2.3.2-2.el7.x86_64 1/22
验证中 : freetype-devel-2.8-12.el7_6.1.x86_64 2/22
验证中 : 2:libpng-devel-1.5.13-7.el7_2.x86_64 3/22
验证中 : libblkid-2.23.2-59.el7_6.1.x86_64 4/22
验证中 : util-linux-2.23.2-59.el7_6.1.x86_64 5/22
验证中 : libmount-2.23.2-59.el7_6.1.x86_64 6/22
验证中 : expat-devel-2.1.0-10.el7_3.x86_64 7/22
验证中 : fontconfig-devel-2.13.0-4.3.el7.x86_64 8/22
验证中 : zlib-devel-1.2.7-18.el7.x86_64 9/22
验证中 : 1:tk-devel-8.5.13-6.el7.x86_64 10/22
验证中 : libXrender-devel-0.9.10-1.el7.x86_64 11/22
验证中 : libuuid-devel-2.23.2-59.el7_6.1.x86_64 12/22
验证中 : libsmartcols-2.23.2-59.el7_6.1.x86_64 13/22
验证中 : libuuid-2.23.2-59.el7_6.1.x86_64 14/22
验证中 : freetype-2.8-12.el7_6.1.x86_64 15/22
验证中 : 1:tcl-devel-8.5.13-8.el7.x86_64 16/22
验证中 : freetype-2.8-12.el7.x86_64 17/22
验证中 : libblkid-2.23.2-59.el7.x86_64 18/22
验证中 : libmount-2.23.2-59.el7.x86_64 19/22
验证中 : util-linux-2.23.2-59.el7.x86_64 20/22
验证中 : libsmartcols-2.23.2-59.el7.x86_64 21/22
验证中 : libuuid-2.23.2-59.el7.x86_64 22/22
已安装:
tk-devel.x86_64 1:8.5.13-6.el7
作为依赖被安装:
expat-devel.x86_64 0:2.1.0-10.el7_3 fontconfig-devel.x86_64 0:2.13.0-4.3.el7 freetype-devel.x86_64 0:2.8-12.el7_6.1 libXft-devel.x86_64 0:2.3.2-2.el7
libXrender-devel.x86_64 0:0.9.10-1.el7 libpng-devel.x86_64 2:1.5.13-7.el7_2 libuuid-devel.x86_64 0:2.23.2-59.el7_6.1 tcl-devel.x86_64 1:8.5.13-8.el7
zlib-devel.x86_64 0:1.2.7-18.el7
作为依赖被升级:
freetype.x86_64 0:2.8-12.el7_6.1 libblkid.x86_64 0:2.23.2-59.el7_6.1 libmount.x86_64 0:2.23.2-59.el7_6.1 libsmartcols.x86_64 0:2.23.2-59.el7_6.1
libuuid.x86_64 0:2.23.2-59.el7_6.1 util-linux.x86_64 0:2.23.2-59.el7_6.1
完毕!
进行任务:
开发界面完成如下功能:1 点击下一步,跳转到新的界面,2 可以展示进度条,可以输入IP地址
#!/usr/bin/python
# -*- coding: UTF-8 -*-
from __future__ import print_function #python2为适应python3的语法实现进度条加的一句代码
from Tkinter import * #引用Tk模块
root = Tk() #初始化Tk()
root.title("主界面") #设置窗口标题
root.geometry('800x500') #设置窗口大小
root.resizable(width=True, height=True) #窗口是否可以变长\宽
def create(): #定义函数 create()
top = Toplevel() #创建顶层窗口
top.title('登陆界面')
top.geometry('800x500')
v1 = StringVar() #绑定变量: var=StringVar() lb=Entry(根对象, textvariable = var)
t1 = Entry(top, textvariable=v1, width=50) #创建单行文本框
t1.grid(row=10, column=10, padx=50, pady=50) #控件数量较多时使用grid()进行布局(不要在同一个窗口中同时使用grid()和pack()!!)
#将控件放在row行,column列的位置,
#padx:设置控件周围水平方向空白区域保留大小; pady:设置控件周围垂直方向空白区域保留大小;
Button(top, text='查找').grid(row=10,column=11,padx=10,pady=10)
def progress(percent,width=50): #定义progress进度条函数 有两个参数
if percent >= 100:
percent=100
show_str = ('[%%-%ds]'%width) % (int(width*percent/100)*'#') #字符串拼接的嵌套使用 %-50s []中有50个字符的长度
print('\r%s %d%%' %(show_str,percent), end='') #python3中新增加的规则,print默认结尾\n,但是此处不想换行,用end=''处理即可
total = 100000
count = 0
for i in range(total): #把0-99999依次赋值给i
a = i*2
count += 1
progress(100*count/total) #调用函数progress()
print ('\nfinished!')
Button(root, text='下一步', command=create).pack(side=BOTTOM) #点击按钮跳入下一界面 pack()参数较少,使用方便,是最简单的布局
root.mainloop() #进入消息循环