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. 洛谷【P1480】A/B Problem

    题目传送门:https://www.luogu.org/problemnew/show/P1480 高精除低精板子题,灵性地回忆一下小学时期列竖式的草稿纸即可. 时间复杂度:\(O(len)\) 空间 ...

  2. 杂项:grunt-tmod

    ylbtech-杂项:grunt-tmod 前端模板预编译工具 tmodjs 的grunt自动化插件. 1.返回顶部 1. grunt-tmod 前端模板预编译工具 tmodjs 的grunt自动化插 ...

  3. WEB服务器(IIS)的配置与管理

    安装Web服务器(IIS) 在"服务器管理器"-"角色"-"添加角色"-选择"Web服务器(IIS)"进行安装 这里,我 ...

  4. 0011_练习题d1

    __author__ = 'qq593' #!/usr/bin/env python #-*- coding:utf-8 -*- #使用while循环输入1 2 3 4 5 6 8 9 10 a=1 ...

  5. 关于JAVA中的回调接口传值机制

    详见博文http://blog.csdn.net/xiaanming/article/details/8703708

  6. [trie]字典树模板

    #include<bits/stdc++.h> using namespace std; typedef long long ll; struct trie{ int count; tri ...

  7. Animations使用01 BrowserAnimationsModule

    1 基础知识 1.1 动画 就是从一个状态过渡到另外一个状态 1.2 状态 元素本身的形状.颜色.大小等 1.3 Angular中的动画 给元素添加一个触发器,当这个触发器被触发后就会让该元素的状态发 ...

  8. supervisor启动worker源码分析-worker.clj

    supervisor通过调用sync-processes函数来启动worker,关于sync-processes函数的详细分析请参见"storm启动supervisor源码分析-superv ...

  9. 注解:java 自定义注解应用实例

    本例子旨在使用自定义注解为实体打上标记,为自动生成 sql 提供依据,模拟 hibernate 的注解,至于注解的原理自己搜吧 1.定义 Table 注解 package test; import j ...

  10. 【Qt官方例程学习笔记】Analog Clock Window Example (画笔的平移/旋转/缩放应用)

    这个例子演示了如何使用QPainter的转换和缩放特性来简化绘图. 值得学习的: 定时器事件ID检查: 在定时器事件中检查定时器id是比较好的实践. QPainter抗锯齿: We call QPai ...