GUI的最终选择 Tkinter(一):Tkinter最初体验
EasyGui就是一个简单的文字交互界面模块,从今天开始来开始学习Tkinter
Tkinter是Python标准的Gui库,它实际是建立在Tk技术上的,Tk最初是为Tcl(一门工具名语言)所涉及的,但由于其可移植性和灵活性高,加上非常容易使用,因此它逐渐被移植到许多脚本语言中,包括Perl、Ruby和Python。
所以 TK + interface = Tkinter
Tkinter是Python默认的GUI库。像IDLE就是用Tkinter设计出来的,因此直接导入Tkinter模块就可以了。
>>> import tkinter
>>>
注:我安装的python版本是3.6的,所以不需要单独安装Tkinter,但是这里也备注下,如果是2.7版本就需要安装,并linux系统下,安装命令为:
apt install python - tk
yum imstall python - tools
Tkinter最初体验
我们来以一个列子进入Tkinter学习吧。
import tkinter as tk
root = tk.Tk() #创建一个主窗口,用于容纳整个GUI程序
root.title("study python") #设置主窗口标题栏
#添加一个Label组件,Label组件是GUI程序中常用组件之一
#Label组件可以显示文本、图标或图片
#在这里我们让他显示指定的文本
thelable = tk.Label(root,text="这是我第一个tkinter程序窗口")
#然后调用Label组件的pack()方法,用于自动调节组件自身的尺寸
thelable.pack()
#注意,这个时候窗口还不会显示的。。。
#除非执行下面的这段代码,进入消息循环
root.mainloop()
执行结果
tkinter.mainloop()通常是程序的最后一行代码,执行后程序进入主事件循环。学习过界面的都知道一句名言:“Don't call me,I will can you.”就是一旦进入主事件循环,就由Tkinter掌握一起了。
进阶版本
如果要写一个大的程序就需要把代码进行封装,在面向对象的语言中,就是封装成类,来看进阶版的例子。
import tkinter as tk class App():
def __init__(self,root):
frame = tk.Frame(root)#创建框架,然后在里面添加一个Button按钮,框架一般是用于在复杂的布局找你起到将组件分组作用
frame.pack()
self.hi_there = tk.Button(frame,text="欢迎学习python",fg="bule",command=self.say_hi) #创建一个按钮组件,fg=foreground的缩写,就是设置前景色
self.hi_there.pack(side=tk.LEFT)
def say_hi(self):
print("python3学习要循序渐进") root = tk.Tk()
app = App(root)
root.mainloop()
执行结果图:
程序跑起来,在窗口中出现“欢迎学习python”,单击后在IDIE接收到反馈信息,反馈信息为:python3学习要循序渐进.
可以通过修改pack()方法的side参数,参数可以设置LEFT、RIGHT、TOP和TOTTOM四个方位,默认设置是:side=tkinter.TOP
例如可以修改为左对齐,frame.pack(side=tk.LEFT),修改后程序如图:
如果想让按钮靠近中间位置,可以通过设置pack()方法的padx和pady参数自定义按钮的偏移位置:
frame.pack(side=tk.LEFT,padx=100,pady=100)
按钮也可以设置背景色,需要用到bg参数,就是background背景的缩写:
self.hi_there = tk.Button(frame, text="欢迎学习python",fg="blue",bg="black", command=self.say_hi)
来改版后的完整程序为:
import tkinter as tk class App():
def __init__(self, root):
frame = tk.Frame(root)
#frame.pack()
# frame.pack(side=tk.LEFT)
frame.pack(side=tk.LEFT,padx=100,pady=100)
# self.hi_there = tk.Button(frame, text="欢迎学习python",fg="blue", command=self.say_hi)
self.hi_there = tk.Button(frame, text="欢迎学习python",fg="blue",bg="black", command=self.say_hi)
self.hi_there.pack(side=tk.LEFT) def say_hi(self):
print("python3学习要循序渐进") root = tk.Tk() #创建一个toplevel的根窗口,并把它作为一个参数传递给实例化对象app
app = App(root)
root.mainloop()
GUI的最终选择 Tkinter(一):Tkinter最初体验的更多相关文章
- Python之GUI的最终选择(Tkinter)
首先,Tkinter是Python默认的GUI库,想IDLE就是用Tkinter设计出来的,因此直接导入Tkinter模块就可以啦 1 import tkinter (1)Tkinter初体验: 1 ...
- GUI的最终选择 Tkinter(九):事件
Tkinter事件处理 Tkinter应用会花费大部分的时间在处理事件循环中(通过mainloop()方法进入),事件可以是触发的鼠标,键盘的操作,管理窗口触发的重绘事件(在多数情况下都是有用户间接引 ...
- GUI的最终选择Tkinter模块初级篇
一.Tkinter模块的基本使用 1)实例化窗口程序 import tkinter as tk app = tk.Tk() app.title("FishC Demo") app. ...
- GUI的最终选择 Tkinter(五):Text用法
Text组件 绘制单行文本使用Label组件,多行选使用Listbox,输入框使用Entry,按钮使用Button组件,还有Radiobutton和Checkbutton组件用于提供单选或多选的情况, ...
- GUI的最终选择 Tkinter(四):Entry、Listbox、Scrollbar和Scale组件
Entry组件 Entry组件就是平时所说的输入框.输入框是程序员用到的最多的一个程序,例如在输入账号和密码的时候需要提供两个输入框,用于接收密码的输入框还会有星号将实际输入的内容隐藏起来. Tkin ...
- GUI的最终选择 Tkinter(七):菜单Menu组件、Menubutton组件、OptionMenu组件
Menu组件 今天说的Menu组件就是一些菜单组件,开始点点点... Tkinter提供了一个Menu组件,可以实现顶级菜单,下拉菜单和弹出菜单.由于底层是代码实现和优化的,所以不太建议通过按钮和其他 ...
- GUI的最终选择Tkinter模块练习篇
一.Canvas画布练习 1)简单的绘制图框 from tkinter import * # 构建一个窗口 tk = Tk() # 画布 canvas= Canvas(tk,width=,height ...
- GUI的最终选择 Tkinter(三):Checkbutton组件和Radiobutton组件、LabelFrame组件
Checkbutton组件 Checkbutton组件就是常见的多选按钮,而Radiobutton则是单选按钮 from tkinter import * root = Tk() v = IntVar ...
- GUI的最终选择 Tkinter(二):Label和Button组件
Label组件 Lable组件是用于界面上输出描述的标签,例如提示用户“您下载的电影含有未成年人限制内容,请满18岁以后点击观看!”,先来上结果图: 在来看下它的代码: from tkinter im ...
随机推荐
- JavaScript RegExp 正则表达式基础详谈
前言: 正则对于一个码农来说是最基础的了,而且在博客园中,发表关于讲解正则表达式的技术文章,更是数不胜数,各有各的优点,但是就是这种很基础的东西,如果我们不去真正仔细研究.学习.掌握,而是抱着需要的时 ...
- bzoj 2178 圆的面积并 —— 辛普森积分
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2178 先看到这篇博客:https://www.cnblogs.com/heisenberg- ...
- bzoj 2632 [ neerc 2011 ] Gcd guessing game —— 贪心
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2632 官方题解:http://neerc.ifmo.ru/archive/2011/neer ...
- 在CentOS 7上安装Node.js的4种方法(包含npm)
Node.js和Javascript有着千丝万缕的联系,可以说Node.js让Javascript显得从未如此强大.好吧…微魔其实是个门外汉…但是这并不能阻碍微魔学习探索未知的信心~今天在国外闲逛,看 ...
- 服务器FTP配置
一.如果没有安装FTP服务器,安装如下: 二.添加SSL证书 三.给证书起一个有意义的名字就可以了 四.FTP SSL设置 五.FTP 身份验证: 进入-如果开启自己需要的-我这里是需要用户输入密码 ...
- 办公软件-Excel:Excel百科
ylbtech-办公软件-Excel:Excel百科 Microsoft Excel是Microsoft为使用Windows和Apple Macintosh操作系统的电脑编写的一款电子表格软件.直观的 ...
- Spring MVC配置详解(3)
一.Spring MVC环境搭建:(Spring 2.5.6 + Hibernate 3.2.0) 1. jar包引入 Spring 2.5.6:spring.jar.spring-webmvc.ja ...
- 网络编程中阻塞和非阻塞socket的区别
阻塞socket和非阻塞socket 建立连接阻塞方式下,connect首先发送SYN请求道服务器,当客户端收到服务器返回的SYN的确认时,则connect返回.否则的话一直阻塞.非阻塞方式,conn ...
- 使用JFileChooser打开文件
-----------------siwuxie095 工程名:TestFileChooser 包名:com.siwuxie095.fi ...
- jdk 安装及环境变量配置
一.jdk安装及基础配置,转自文章来源:http://www.cnblogs.com/smyhvae/p/3788534.html 1.jdk下载及安装 下载网站:http://www.oracle. ...