Python支持多种图形界面的第三方库,包括:

Tk

wxWidgets

Qt

GTK

等等。

但是Python自带的库是支持Tk的Tkinter,使用Tkinter,无需安装任何包,就可以直接使用。本章简单介绍如何使用Tkinter进行GUI编程。

Tkinter

我们来梳理一下概念:

我们编写的Python代码会调用内置的Tkinter,Tkinter封装了访问Tk的接口;

Tk是一个图形库,支持多个操作系统,使用Tcl语言开发;

Tk会调用操作系统提供的本地GUI接口,完成最终的GUI。

所以,我们的代码只需要调用Tkinter提供的接口就可以了。

第一个GUI程序

使用Tkinter十分简单,我们来编写一个GUI版本的“Hello, world!”。

第一步是导入Tkinter包的所有内容:

from tkinter import *

第二步是从Frame派生一个Application类,这是所有Widget的父容器:

class Application(Frame):

def __init__(self, master=None):

Frame.__init__(self, master)

self.pack()

self.createWidgets()

def createWidgets(self):

self.helloLabel = Label(self, text='Hello, world!')

self.helloLabel.pack()

self.quitButton = Button(self, text='Quit', command=self.quit)

self.quitButton.pack()

在GUI中,每个Button、Label、输入框等,都是一个Widget。Frame则是可以容纳其他Widget的Widget,所有的Widget组合起来就是一棵树。

pack()方法把Widget加入到父容器中,并实现布局。pack()是最简单的布局,grid()可以实现更复杂的布局。

在createWidgets()方法中,我们创建一个Label和一个Button,当Button被点击时,触发self.quit()使程序退出。

第三步,实例化Application,并启动消息循环:

app = Application()

# 设置窗口标题:

app.master.title('Hello World')

# 主消息循环:

app.mainloop()

GUI程序的主线程负责监听来自操作系统的消息,并依次处理每一条消息。因此,如果消息处理非常耗时,就需要在新线程中处理。

运行这个GUI程序,可以看到下面的窗口:

点击“Quit”按钮或者窗口的“x”结束程序。

输入文本

我们再对这个GUI程序改进一下,加入一个文本框,让用户可以输入文本,然后点按钮后,弹出消息对话框。

from tkinter import *

import tkinter.messagebox as messagebox

class Application(Frame):

def __init__(self, master=None):

Frame.__init__(self, master)

self.pack()

self.createWidgets()

def createWidgets(self):

self.nameInput = Entry(self)

self.nameInput.pack()

self.alertButton = Button(self, text='Hello', command=self.hello)

self.alertButton.pack()

def hello(self):

name = self.nameInput.get() or 'world'

messagebox.showinfo('Message', 'Hello, %s' % name)

app = Application()

# 设置窗口标题:

app.master.title('Hello World')

# 主消息循环:

app.mainloop()

当用户点击按钮时,触发hello(),通过self.nameInput.get()获得用户输入的文本后,使用tkMessageBox.showinfo()可以弹出消息对话框。

程序运行结果如下:

小结

Python内置的Tkinter可以满足基本的GUI程序的要求,如果是非常复杂的GUI程序,建议用操作系统原生支持的语言和库来编写。

参考源码

python怎么做图形界面-图形界面相关推荐

  1. 基于python qml做的汽车仪表盘界面

    基于python环境 用qml编写的 其他语言也是能用的 ps: gif录制的看起来会卡一些 实际非常流畅 效果图

  2. python kivy显示图片_Kivy 图形界面开发初体验

    本文是觅道文档连载教程<使用Kivy构建现代桌面GUI应用> 的第一个实例,如需细致的介绍,可点击此处进行阅读 Kivy 是一个开源的 Python 第三方库,可以用来快速开发应用程序. ...

  3. 做一个支持图形界面的操作系统(上)

    分类: OS2006-05-01 20:00 856人阅读 评论(0) 收藏 举报 原文:http://www.binghua.com/Article/Class6/Class7/200409/267 ...

  4. 做一个支持图形界面的操作系统(zz)

    原文:http://www.binghua.com/Article/Class6/Class7/200409/267.html (转载及引用请注明明原作者及出处) (pdf: http://www.b ...

  5. Python如何用TKinter搭建图形界面窗口,并通过多进程的方式调用功能函数

    用Python开发图形界面和程序时,经常会对图形界面的搭建感到失望,或许是由于对图形界面不熟悉的原因吧,总之一想到图形界面,就感觉会很费时.费力,编程的积极性大幅下降.最近,尝试用Tkinter创建了 ...

  6. 编写一个python程序、输出如下图形效果_Tkinter模块编写Python图形界面代码实例...

    本篇文章小编给大家分享一下Tkinter模块编写Python图形界面代码实例,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 一.为何使用Tkinter ...

  7. python桌面应用开发kivy_Kivy 图形界面开发初体验

    本文是觅道文档连载教程<使用Kivy构建现代桌面GUI应用> 的第一个实例,如需细致的介绍,可在文末点击"阅读原文"进行阅读 Kivy 是一个开源的 Python 第三 ...

  8. python能做界面吗_如何使用pyQT做pythonGUI界面|

    如何使用pyQT做pythonGUI界面| python3 gui教程2020-09-24 23:12:27人已围观 python开发的gui漂亮吗 可以 0.前言 有不学者会问,Python 写的程 ...

  9. linux图形和命令界面切换

    linux图形和命令界面切换 一.系统不在虚拟机中的情况 使用ctrl+alt+F1~6切换到命令行界面:ctrl+alt+F7切换到图形界面 二.系统在虚拟机中的情况 Ctrl+Alt+shift+ ...

  10. Redhat7开机图形或文字界面

    Redhat7开机图形或文字界面 查看开机图形或文字: # systemctl get-default 设置开机图形界面: # systemctl set-default graphical.targ ...

最新文章

  1. DNF安装MySQL_CentOS7使用dnf安装mysql
  2. python百度云资源-Python开发视频百度云分享
  3. CSS中块级格式化上下文(BFC)的特性与应用
  4. Python 知识点全解析系列之列表推导式(list comprehension)
  5. 2019ICPC(南京) - Holy Grail(最短路)
  6. 【Android开发】我的第一个安卓程序
  7. 微信小程序开发需要了解的三个内核技术
  8. ora-28500 ora-02063 mysql_oracle dblink mysql 报错ORA-28500
  9. 不定高宽的元素居中的方法
  10. java数学函数Math类
  11. mssql sqlserver 优化注意事项:
  12. The content of element type “resultMap“ must match “(constructor?,id*,result*,association*,collectio
  13. 3dsmax模型导入超图
  14. 路由器多区域 OSPF 配置
  15. 关于鸿蒙系统传统文化的作文,关于生活中的传统文化作文(精选10篇)
  16. css3 描两个边,CSS3 / 指定四条边中图像的显示方法 - 汇智网
  17. 中国七大区域(东北,西北,华北,华南,华中,华东,西南) vue + Echrats地图效果
  18. 基于混沌系统的文本加密算法研究(二)——经典混沌映射
  19. 奥付云荣获2017年度企业级创新应用 Top 50
  20. 芯人必读 | 中国半导体产业发展历史大事记一览

热门文章

  1. Java_io体系之BufferedWriter、BufferedReader简介、走进源码及示例——16
  2. LeNet训练MNIST
  3. keras 修仙笔记一
  4. DataBinding初探 数据绑定的用法 ,import 集合类型,绑定的表达式,访问集合类型2...
  5. GO 跟C++/C差异
  6. poj 1741 Tree
  7. eclipse - unresolved inclusion: stdio.h
  8. 后台给前台服务器控件添加样式
  9. 在线HTML编辑器使用入门(Kindeditor)
  10. 网络攻防-20169213-刘晶-第六周作业