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最初体验的更多相关文章

  1. Python之GUI的最终选择(Tkinter)

    首先,Tkinter是Python默认的GUI库,想IDLE就是用Tkinter设计出来的,因此直接导入Tkinter模块就可以啦 1 import tkinter (1)Tkinter初体验: 1 ...

  2. GUI的最终选择 Tkinter(九):事件

    Tkinter事件处理 Tkinter应用会花费大部分的时间在处理事件循环中(通过mainloop()方法进入),事件可以是触发的鼠标,键盘的操作,管理窗口触发的重绘事件(在多数情况下都是有用户间接引 ...

  3. GUI的最终选择Tkinter模块初级篇

    一.Tkinter模块的基本使用 1)实例化窗口程序 import tkinter as tk app = tk.Tk() app.title("FishC Demo") app. ...

  4. GUI的最终选择 Tkinter(五):Text用法

    Text组件 绘制单行文本使用Label组件,多行选使用Listbox,输入框使用Entry,按钮使用Button组件,还有Radiobutton和Checkbutton组件用于提供单选或多选的情况, ...

  5. GUI的最终选择 Tkinter(四):Entry、Listbox、Scrollbar和Scale组件

    Entry组件 Entry组件就是平时所说的输入框.输入框是程序员用到的最多的一个程序,例如在输入账号和密码的时候需要提供两个输入框,用于接收密码的输入框还会有星号将实际输入的内容隐藏起来. Tkin ...

  6. GUI的最终选择 Tkinter(七):菜单Menu组件、Menubutton组件、OptionMenu组件

    Menu组件 今天说的Menu组件就是一些菜单组件,开始点点点... Tkinter提供了一个Menu组件,可以实现顶级菜单,下拉菜单和弹出菜单.由于底层是代码实现和优化的,所以不太建议通过按钮和其他 ...

  7. GUI的最终选择Tkinter模块练习篇

    一.Canvas画布练习 1)简单的绘制图框 from tkinter import * # 构建一个窗口 tk = Tk() # 画布 canvas= Canvas(tk,width=,height ...

  8. GUI的最终选择 Tkinter(三):Checkbutton组件和Radiobutton组件、LabelFrame组件

    Checkbutton组件 Checkbutton组件就是常见的多选按钮,而Radiobutton则是单选按钮 from tkinter import * root = Tk() v = IntVar ...

  9. GUI的最终选择 Tkinter(二):Label和Button组件

    Label组件 Lable组件是用于界面上输出描述的标签,例如提示用户“您下载的电影含有未成年人限制内容,请满18岁以后点击观看!”,先来上结果图: 在来看下它的代码: from tkinter im ...

随机推荐

  1. 【caffe】卷积层代码解析

    1.Forward_cpu conv_layer.cpp template <typename Dtype> void ConvolutionLayer<Dtype>::For ...

  2. css 更换浏览器 默认图标

    cursor:url("./images/test.cur"),auto; 只在chrome测试过...

  3. POJ1456:Supermarket

    浅谈堆:https://www.cnblogs.com/AKMer/p/10284629.html 题目传送门:http://poj.org/problem?id=1456 把物品按照时间排序,显然\ ...

  4. 【转】 Pro Android学习笔记(六三):Preferences(7):代码控制首选项

    [-] 代码实现preference 利用preference保存状态 DialogPreference 代码实现preference View可以不通过xml进行设置,有代码直接进行设置,首选项pr ...

  5. glusterfs安装配置简单使用

    GlusterFS是一种分布式分布式文件系统,默认采用无中心完全对等架构,搭建维护使用十分简单,是很受欢迎的分布式文件系统. 官网https://www.gluster.org/,官网上表示Glust ...

  6. IOS+openCV在Xcode的入门开发

    昨天折腾了一天,终于搞定了openCV+IOS在Xcode下的环境并且实现一个基于霍夫算法的圆形识别程序.废话不多说,下面就是具体的折腾流程: ---------------------------- ...

  7. Convolutional Neural Networks 笔记

    1 Foundations of Convolutional Neural Networks 1.1 cv问题 图像分类.目标检测.风格转换.但是高像素的图片会带来许多许多的特征. 1.2 边缘检测( ...

  8. shell script-判断式

    test判断式 看下面: test -e /opt/a.txt && echo "exist" || echo "not exist" 判断 / ...

  9. Android性能优化系列---管理你的app内存

     文章出处:http://developer.android.com/training/articles/memory.html#YourApp Random-access memory(RAM)在任 ...

  10. .Net Core中依赖注入服务使用总结

    一.依赖注入 引入依赖注入的目的是为了解耦和.说白了就是面向接口编程,通过调用接口的方法,而不直接实例化对象去调用.这样做的好处就是如果添加了另一个种实现类,不需要修改之前代码,只需要修改注入的地方将 ...