• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

这可能是最好玩的python GUI入门实例(推荐)

python 搞代码 4年前 (2022-01-09) 33次浏览 已收录 0个评论

简单的说,GUI编程就是给程序加上图形化界面.

python的脚本开发简单,有时候只需几行代码就能实现丰富的功能,而且python本身是跨平台的,所以深受程序员的喜爱.

如果给程序加一个图形化界面,那么普通的用户也就能用上python的脚本,极大提升工作效率,所以给python程序加上图形化界面,把自己写的脚本,提供给普通用户,的确是一件激动人心的事!

如何给python脚本加图形化界面?

作者首先考虑了通过浏览器运行python的图形化界面,为了理想的效果,python需要借助javascript实现一些功能,而且python需要额外安装pyv8模块,我折腾了一下,发现pyv8模块安装很麻烦,而且依赖的库很多,编译安装也根据不同的操作系统,存在各种坑,pyv8不适合普通用户,于是就暂时搁置了pyv8模块.

软件界面

随后我又比较了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位置(离线版)")
 # 创<i style="color:transparent">本文来源gaodai$ma#com搞$代*码*网(</i>建一个输入框,并设置尺寸
 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()

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:这可能是最好玩的python GUI入门实例(推荐)

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址