简单的说,GUI编程就是给程序加上图形化界面.
python的脚本开发简单,有时候只需几行代码就能实现丰富的功能,而且python本身是跨平台的,所以深受程序员的喜爱.
如果给程序加一个图形化界面,那么普通的用户也就能用上python的脚本,极大提升工作效率,所以给python程序加上图形化界面,把自己写的脚本,提供给普通用户,的确是一件激动人心的事!
如何给python脚本加图形化界面"text-align: center">
软件界面
随后我又比较了pyqt5与tkinter两个模块: pyqt5功能很强,界面也漂亮,但语法比较复杂,pyqt5模块需要单独安装,不适合新手入门;
tkinter是python3自带的模块,能满足基本的功能需求,语法也简单,基本上5分钟就能上手,所以最终选择了tkinter.
网上当前的python GUI教程存在的问题:
1.功能太简单,基本功能就是"花式"显示"Hello World";
2.注释不明了,复制粘贴别人写的博客代码,代码残缺
3.版本老旧,都是针对python2.7的程序,导入方式如 import Tkinter
,python3应为 import tkinter
这次作者选择了一个 "根据ip地址定位地理位置"的脚本,作为本次教程的素材,比较好玩,也比较容易实现:
解释的内容都放到了注释里,上代码:
import tkinter import pygeoip class FindLocation(object): def __init__(self): self.gi = pygeoip.GeoIP("./GeoLiteCity.dat") # 创建主窗口,用于容纳其它组件 self.root = tkinter.Tk() # 给主窗口设置标题内容 self.root.title("全球定位ip位置(离线版)") # 创建一个输入框,并设置尺寸 self.ip_input = tkinter.Entry(self.root,width=30) # 创建一个回显列表 self.display_info = tkinter.Listbox(self.root, width=50) # 创建一个查询结果的按钮 self.result_button = tkinter.Button(self.root, command = self.find_position, text = "查询") # 完成布局 def gui_arrang(self): self.ip_input.pack() self.display_info.pack() self.result_button.pack() # 根据ip查找地理位置 def find_position(self): # 获取输入信息 self.ip_addr = self.ip_input.get() aim = self.gi.record_by_name(self.ip_addr) # 为了避免非法值,导致程序崩溃,有兴趣可以用正则写一下具体的规则,我为了便于新手理解,减少代码量,就直接粗放的过滤了 try: # 获取目标城市 city = aim["city"] # 获取目标国家 country = aim["country_name"] # 获取目标地区 region_code = aim["region_code"] # 获取目标经度 longitude = aim["longitude"] # 获取目标纬度 latitude = aim["latitude"] except: pass # 创建临时列表 the_ip_info = ["所在纬度:"+str(latitude),"所在经度:"+str(longitude),"地域代号:"+str(region_code),"所在城市:"+str(city), "所在国家或地区:"+str(country), "需要查询的ip:"+str(self.ip_addr)] #清空回显列表可见部分,类似clear命令 for item in range(10): self.display_info.insert(0,"") # 为回显列表赋值 for item in the_ip_info: self.display_info.insert(0,item) # 这里的返回值,没啥用,就是为了好看 return the_ip_info def main(): # 初始化对象 FL = FindLocation() # 进行布局 FL.gui_arrang() # 主程序执行 tkinter.mainloop() pass if __name__ == "__main__": main()
运行效果(为了更好的演示效果,使用了gif图,图片尺寸较大,建议在wifi环境下观看,土豪随意~):
一张很有尺寸的演示图!
由于离线查询ip需要全球IP的分布数据,所以我直接选择了一个免费离线查询ip的数据包,为了读取这个包的数据还需要安装一个模块: pip install pygeoip
,极少数人的当年安装python3的时候,选了不含tkinter的python3安装包,为了学习,还是要把这个模块补上: pip install tkinter
如果想将示例程序转为windows下的可执行文件(.exe),参考这篇
https://www.jb51.net/article/165766.htm
教程涉及到的资源我都通过百度网盘分享给大家,为了便于大家的下载,资源整合到了一张独立的帖子里,链接如下:
http://www.jianshu.com/p/4f28e1ae08b1
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
- 羽泉《给未来的你&天黑天亮》[WAV+CUE][968M]
- 庄心妍《我也许在等候》[低速原抓WAV+CUE]
- 王雅洁《小调歌后2》[原抓WAV+CUE]
- 中国武警男声合唱团《辉煌之声1天路》[DTS-WAV分轨]
- 紫薇《旧曲新韵》[320K/MP3][175.29MB]
- 紫薇《旧曲新韵》[FLAC/分轨][550.18MB]
- 周深《反深代词》[先听版][320K/MP3][72.71MB]
- 李佳薇.2024-会发光的【黑籁音乐】【FLAC分轨】
- 后弦.2012-很有爱【天浩盛世】【WAV+CUE】
- 林俊吉.2012-将你惜命命【美华】【WAV+CUE】
- 晓雅《分享》DTS-WAV
- 黑鸭子2008-飞歌[首版][WAV+CUE]
- 黄乙玲1989-水泼落地难收回[日本天龙版][WAV+CUE]
- 周深《反深代词》[先听版][FLAC/分轨][310.97MB]
- 姜育恒1984《什么时候·串起又散落》台湾复刻版[WAV+CUE][1G]