【Python入门】38.第一个GUI程序

摘要:教你如何使用Python内置的Tkinter,创建第一个GUI程序。


*写在前面:为了更好的学习python,博主记录下自己的学习路程。本学习笔记基于廖雪峰的Python教程,如有侵权,请告知删除。欢迎与博主一起学习Pythonヽ( ̄▽ ̄)ノ *


目录

图形界面
Tkinter

图形界面

Python支持多种图形界面的第三方库,包括Tk,wxWidgets,Qt,GTK等。

本文介绍如何使用Tkinter进行GUI编程。

Python内置了Tkinter,Tkinter封装了访问图形库Tk的接口,通过Tkinter就能完成简单的GUI编程。

Tkinter

创建一个GUI程序的步骤如下:
1.导入Tkinter模块;
2.创建一个继承Frame的类(Frame是用来放控件的容器,你可以理解为一个矩形框架);
3.创建控件
4.指定控件的master;
5.启动消息循环

第一个GUI程序:

from tkinter import *                    # 引入Tkinter包的所有内容

class A(Frame):                          # 定义一个Frame类
    def __init__(self, master=None):     
        Frame.__init__(self, master)     
        self.pack()                      # 把控件放到主界面,实现布局
        self.createWidgets()             # 调用创建控件的方法

    def createWidgets(self):
        self.helloLabel = Label(self, text='Hello,world!')       # 创建label控件,用于显示文本或位图
        self.helloLabel.pack()                         # 把label控件放到主界面
        self.quitButton = Button(self, text='Quit', command=self.quit)    # 创建button控件,用于退出
        self.quitButton.pack()

app = A()                                          # 实例化A
app.master.title('The first GUI')                  # 设置窗口标题
app.master.geometry('200x100')                     # 设置窗口大小
app.mainloop()                                     # 启动消息循环

结果显示如下:


第一个GUI程序

当然,还能加入其它很多控件,如加入文本框,让用户输入文本,然后显示信息。

这时候我们需要引入一个messagebox模块,具体代码()如下:

from tkinter import *
import tkinter.messagebox as messagebox

class A(Frame):
    def __init__(self, master=None):
        Frame.__init__(self, master)
        self.pack()
        self.createWidgets()

    def createWidgets(self):
        self.nameInput = Entry(self)                              # Entry让用户输入文本
        self.nameInput.pack()
        self.alertButton = Button(self, text='Hello', command=self.hello)   # 加入button控件,按钮嗲用hello方法
        self.alertButton.pack()

    def hello(self):
        name = self.nameInput.get() or 'world'                    # 拿取用户输入的文本
        messagebox.showinfo('Message', 'Hello, %s' % name)        # 弹出消息对话框

app = A()
app.master.title('Hello World')
app.mainloop()

结果显示如下:


第一个GUI程序

核心控件介绍:

控件名称 功能
Button 按钮控件,创建一个按钮
Canvas 绘图控件,用于显示图形或文本
Checkbutton 多选框控件,显示一个多项选择框
Entry 输入控件,让用户输入文本
Text 文本控件,显示多行文本
Frame 框架控件,存放控件的容器
Label 标签控件,用于显示文字或位图
Listbox 列表框控件,显示字符串列表
Menu 菜单控件,显示菜单栏
Menubutton 菜单按钮控件,显示菜单项
Message 消息控件,显示多行文本,与label类似
Radiobutton 单选框控件,显示一个单向选择框
Scale 范围控件,创建一个滑块用于设置一个范围数值
Scrollbar 滚动条框架,当界面超过可视化区域时使用
Toplevel 容器框架,用于创建子窗口

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


以上就是本节的全部内容,感谢你的阅读。

下一节内容:网络编程

有任何问题与想法,欢迎评论与吐槽。

和博主一起学习Python吧( ̄▽ ̄)~*

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,492评论 6 513
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,048评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,927评论 0 358
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,293评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,309评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,024评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,638评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,546评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,073评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,188评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,321评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,998评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,678评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,186评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,303评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,663评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,330评论 2 358

推荐阅读更多精彩内容

  • Python 面向对象Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对...
    顺毛阅读 4,219评论 4 16
  • 1、图形化界面设计的基本理解当前流行的计算机桌面应用程序大多数为图形化用户界面(Graphic User Inte...
    IIronMan阅读 257,326评论 15 243
  • 前言 Python的创始人为Guido van Rossum。1989年圣诞节期间,在阿姆斯特丹,Guido为了打...
    依依玖玥阅读 3,569评论 6 37
  • python GUI python提供了多个图形开发界面的库,几个常用Python GUI库如下: Tkinter...
    ProZoom阅读 1,276评论 0 1
  • 文科生思维并不是指文科生的思维,甚至和是否接受过文科知识教育没有一毛钱关系。试问本人作为一个文科生怎么会无端黑全体...
    何杰坤阅读 717评论 0 1