【Python】学习笔记——-16、图形界面
来源:互联网 发布:java游戏合集百度云盘 编辑:程序博客网 时间:2024/06/11 14:43
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 messageboxclass 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】学习笔记——-16、图形界面
- python学习——图形界面
- Python学习笔记 图形界面GUI
- Python学习笔记(五)——模块|图形界面|网络编程
- 《Python基础教程》学习笔记(12图形界面)
- PyGObject笔记1——用Python写图形界面
- FFmpeg+SDL视频播放器—图形界面版学习笔记
- 学习笔记_图形界面
- 09Java笔记—java中的图形界面
- 黑马程序员——Java学习笔记之⑥——“图形界面GUI”
- OpenCV学习笔记(二十五)——OpenCV图形界面设计Qt+VS2008
- Linux学习笔记(三)——安装X图形界面以及简单操作
- EasyX学习笔记 1st —— C++控制台革命:图形界面
- python 学习笔记——python globals()
- Python学习笔记 — 函数
- Python学习笔记—钱珺
- python学习笔记—输入输出
- OpenCV—Python 学习笔记
- WinDbg使用笔记
- (三十七)模型视图设计模型
- C++11 并发指南三(Lock 详解)
- check all threads in a process
- 内存泄露,java.util.concurrent包
- 【Python】学习笔记——-16、图形界面
- C++11 并发指南四(<future> 详解一 std::promise 介绍)
- Fedora 25 删除多余内核
- 【Python】学习笔记——-17、网络编程
- C++11 并发指南四(<future> 详解二 std::packaged_task 介绍)
- QT编译opencv
- CSS3 Text-overflow截取文字显示...
- 线路驱动器和缓冲器
- Codeforces 768A Oath of the Night's Watch