导入tkinter

import Tkinter
from Tinter import * import tkinter
from tinter import *

  

实例化Tk类

root=tkinter.Tk()

  

窗口标题

root.title('My Window')

  

设定窗口的大小(长 * 宽)

root.geometry('500x300') # 这里的乘是小x

 

禁止宽度拉伸高度可自由拉伸:root.resizable(width=False, height=True)

禁止高度拉伸宽度可只有拉伸:root.resizable(width=True, height=False)


设置图标;图标必须是以 .ico 为后缀的图标文件,放于同目录下。
root.iconbitmap("app.ico")

  

设置背景颜色:可以用英文名,也可以用RGU,十六进制表示的颜色。
root["background"] = "blue"

  

设置透明度:透明度的值是0~1 可以是小数点,0:全透明;1:全不透明

win.attributes("-alpha", 0.6)

  

 

工具样式:True 只有退出按钮,也没有图标; False 正常的窗体样式

win.attributes("-toolwindow", True)

  

全屏模式:True 全屏;False 正常显示

win.attributes("-fullscreen", True)

  

窗体置顶:True 所有窗口中处于最顶层;False 正常显示

win.attributes("-topmost", True)

  

脱离工具栏:True 没有工具栏按钮;False 正常显示

win.overrideredirect(True)

  

窗体的三个方法:

获取屏幕的大小;
screen_height = root.winfo_screenheight()
screen_width = root.winfo_screenwidth()

  

# 获取屏幕的大小;
win_height = root.winfo_height()
win_width = root.winfo_width()

  

# 获取窗体的位置
win_x = win.winfo_x()
win_y = win.winfo_y()

  


主窗口循环显示
window.mainloop()

 该程序将保持在事件循环中,直到我们关闭窗口。事件循环不仅处理用户事件(例如鼠标单击和按键)或窗口系统(例如重绘事件和窗口配置消息) ,还处理Tkinter本身排队的操作这些操作包括几何图形管理(通过pack方法排队)和显示更新。这也意味着在进入主循环口将不会出现

主循环调用进入Tk事件循环,在此循环中,应用程序将一直停留到调用quit方法(只需单击quit按钮),或者窗口关闭

root.destroy()
只有在某些开发环境下运行此示例时才需要destroy调用;当事件循环终止时,它显式地销毁主窗口。有些开发环境不会终止Python进程,除非这样做

Label控件

更新text

先定义一个:tk变量,v = tk.StringVar()

再使用:textvariable=v

import tkinter as tk
import time # 背景色与前景色
win = tk.Tk() # 定义变量,必须是使用的是tk里的这个变量
v = tk.StringVar() # 使用v.set("string") 来定义变量
v.set("这是刚开始的文字") # 在标签里添加可变的文本
label_1 = tk.Label(win, textvariable=v, fg="red", bg="green", font=("黑体", 40))
label_1.pack()
while True:
v.set("%s" % time.ctime())
label_1.update()
time.sleep(1) win.mainloop()

  

属性 说明  用法  例子  备注
text 标签显示的文本  font=("字体名",大小);font =('黑体',40,'bold','italic')

import tkinter as tk

# 背景色与前景色
win = tk.Tk()
label_1 = tk.Label(win, text='fg="red" bg="blue"', fg="red", bg="blue")
label_1.pack() # 字体与字体的大小
label_2 = tk.Label(win, text='font=("微软雅黑", 20)', font=("微软雅黑", 20))
label_2.pack() # 宽度与高度
label_3 = tk.Label(win, text='width=10, height=3', bg="yellow", width=10, height=3)
label_3.pack()
label_4 = tk.Label(win, text='width=20, height=1', bg="yellow", width=20, height=1)
label_4.pack() # 边距
label_5 = tk.Label(win, text='padx pady 默认', bg="blue")
label_5.pack()
label_6 = tk.Label(win, text='padx=0, pady=0', bg="blue", padx=0, pady=0)
label_6.pack()
label_7 = tk.Label(win, text='padx=10, pady=10', bg="blue", padx=10, pady=10)
label_7.pack() win.mainloop()

  

 #bold:粗体,italic:斜体,overstrike:横穿线
font 设置文本的字体和大小 fg="red" or fg="#121234"  
fg(foreground) 字体的颜色,    
bg (background) 标签的背景色    
width 标签的宽度(一个中文的字体宽为单位)    以系统默认的中文的一个字体宽高为单位
height 标签的高度(一个中文的字体高为单位)    以系统默认的中文的一个字体宽高为单位
padx 文字到边框的距离,水平方向    单位是像素,默认是1像素
pady 文字到边框的距离,垂直方向    单位是像素,默认是1像素
bd(borderwidth) 边框的宽    
relief 边框的样式  relief="sunken"

import tkinter as tk

win = tk.Tk()

# 在标签里放入图片SUNKEN, RAISED, GROOVE, and RIDGE
# 默认 flat平的
label_1 = tk.Label(win, text='relief=flat', bd=8)
label_1.pack() # sunken 沉没的
label_2 = tk.Label(win, text='relief=sunken', relief="sunken", bd=5)
label_2.pack() # raised 提高
label_3 = tk.Label(win, text='relief=raised', relief="raised", bd=5)
label_3.pack() # ridge脊
label_4 = tk.Label(win, text='relief=ridge', relief="ridge", bd=10)
label_4.pack() win.mainloop()

  

relief 表示边框样式,可选的参数有:flat(平的),sunken (沉没的, 凹下去的),raised (提高,凸出来的),ridge(脊,中键凸的)

relief="sunken", 默认是flat.

justify 文本对齐方式  justify="left"

# 对齐方式
label_8 = tk.Label(win, text="我是张一根,一匹想飞的狼,\n999号哦")
label_8.pack()
label_9 = tk.Label(win, text="我是张一根,一匹想飞的狼,\n999号哦", justify="left")
label_9.pack()
label_9 = tk.Label(win, text="我是张一根,一匹想飞的狼,\n999号哦", justify="right")
label_9.pack()

  

 Label 里的文本支持 转移字符 \n \t 等,可取 "left" ,"right", "center" ,默认是"center"居中对齐
image 图片  

import tkinter as tk

win = tk.Tk()

# 导入图片
img1 = tk.PhotoImage(file="image/01.png") # 在标签里放入图片
label_image1 = tk.Label(win, image=img1)
label_image1.pack() win.mainloop()

  

只放图片,没有文字

需要先导入图片的路径:img1 = tk.PhotoImage(file="image/01.png")

再使用:image=img1

注:目前支持 .png 与 .gif 格式, 还不支持 .jpg格式

compound 图片与文字的混搭  compound="对齐方式"

import tkinter as tk

win = tk.Tk()

# 导入图片
img1 = tk.PhotoImage(file="image/01.png") # 在标签里放入图片
label_image1 = tk.Label(win, text="图文并茂", image=img1, compound="left")
label_image1.pack() label_image2 = tk.Label(win, text="图文并茂", image=img1, compound="right")
label_image2.pack() label_image3 = tk.Label(win, text="图文并茂", image=img1, compound="center", fg="red")
label_image3.pack() win.mainloop()

  

 对齐方式有:'left', "right", "center"
anchor 方位  

import tkinter as tk

win = tk.Tk()
label_1 = tk.Label(win, text="方位是 N", bg="green", width=10, height=3, anchor="n")
label_1.pack() label_2 = tk.Label(win, text="方位是 NE", bg="blue", width=10, height=3, anchor="ne")
label_2.pack() label_3 = tk.Label(win, text="方位是 SW", bg="red", width=10, height=3, anchor=tk.SW)
label_3.pack() label_4 = tk.Label(win, text="方位是 W", bg="yellow", width=10, height=3, anchor=tk.W)
label_4.pack()
win.mainloop()

  

 anchor 可选的参数有:"e","w","s","n","ne","se","nw","sw",就是东西南北八个方向
链接:https://www.cnblogs.com/zyg123/p/10351055.html

Button 控件

属性 说明
text 标签显示的文本
font 设置文本的字体和大小
fg(foreground) 字体的颜色,
bg (background) 标签的背景色
width 标签的宽度(一个中文的字体宽为单位)
height 标签的高度(一个中文的字体高为单位)
cursor 鼠标的样式
command 绑定事件
padx 文字到边框的距离,水平方向
pady 文字到边框的距离,垂直方向
bd(borderwidth) 边框的宽度
relief 边框的样式
justify 文本对齐方式
image 图片
compound 图片与文字的混搭
anchor 方位

Entry小部件:

窗口小部件是小部件用于输入或显示文本的一行一个标准Tkinter的

输入小部件用于输入文本字符串。该小部件允许用户以一种字体输入一行文本。

要输入多行文本,请使用“ 文本”小部件

e.delete(0, END)    //删除内容
e.insert(0, "a default value") //插入文本
s = e.get()  //获取当前Entry文本

  

您还可以将条目小部件绑定到StringVar实例,并通过该变量设置或获取条目文本:

v = StringVar()
e = Entry(master, textvariable=v)
e.pack() v.set("a default value")
s = v.get()

  

 

几何管理

pack

属性 说明 用法 例子 备注
side 按扭停靠在窗口的哪个位置  side=LEFT
#!/usr/bin/env python
# _*_ coding:utf-8 _*_
from Tkinter import *
root = Tk()
Button(root,text='A').pack(side=LEFT,expand=YES,fill=Y)
Button(root,text='B').pack(side=TOP,expand=YES,fill=BOTH)
Button(root,text='C').pack(side=RIGHT,expand=YES,fill=NONE)
Button(root,text='D').pack(side=LEFT,expand=NO,fill=Y)
Button(root,text='E').pack(side=TOP,expand=YES,fill=BOTH)
Button(root,text='F').pack(side=BOTTOM,expand=YES)
Button(root,text='G').pack(anchor=SE)
root.mainloop()

  效果:

left: 左;top: 上;right: 右;botton: 下

fill

填充,填充x(y)方向上的空间,当属性

side=”top”或”bottom”时,填充x方向;

当属性side=”left”或”right”时,填充”y”

方向;当expand选项为”yes”时,填充父

控件的剩余空间。

 fill=NONE

x:水平方向填充

    y:竖直方向填充

    both:水平和竖直方向填充

    none:不填充

expand

当值为True时,side选项无效。控件显示

在父控件中心位置;

若fill选项为”both”,则充满父控件的空间。

 expand=YES

取值范围:“yes”,”no”,”y”,”n” 自然数,浮点数 “no”, 0,True,False (默认值为“no”或0);

yes:扩展整个空白区,no:不扩展

anchor

控件的摆放方式。默认是居中。左对齐

”w”,右对齐”e”,顶对齐”n”,

底对齐”s”。w 和e可以与n和s组合使用

 anchor=SE

    N:北  下

    E:东  右

    S:南 下

    W:西 左

    CENTER:中间

padx     x方向的外边距
pady     y方向的外边距
ipadx     x方向的内边距
ipady     y方向的内边距
beforе

将本组件于所选组建对象之前pack,

类似于先创建本组件再创建选定组件

  取值范围:已经pack后的组件对象
in

将本组件作为所选组建对象的子组件,

类似于指定本组件的master为选定组件

  取值范围:已经pack后的组件对象
after

将本组件于所选组建对象之后pack,

类似于先创建选定组件再创建本组件

   
链接:https://blog.csdn.net/lnaruto1234/article/details/89501824

由以上过程可知,pack会自动填充空间,而且下一个控件pack的地方永远是上一个空间pack完后剩余空间,关于expand属性,当其为真的时候,则会将其能扩展的最大空间

grid

选项 说明

例子 案例 备注
column 单元格的列号
column=1
from tkinter import *
from tkinter import messagebox
import random
class Application(Frame):
def __init__(self, master=None):
super().__init__(master) # super()代表的是父类的定义, 而不是父类
对象
self.master = master
self.pack()
self.createWidget()
def createWidget(self):
"""通过 grid 布局实现登录界面"""
self.label01 = Label(self,text="用户名")
self.label01.grid(row=0,column=0)
self.entry01 = Entry(self)
self.entry01.grid(row=0,column=1)
Label(self,text="用户名为手机号").grid(row=0,column=2)
Label(self, text="密码").grid(row=1, column=0)
Entry(self, show="*").grid(row=1, column=1)
Button(self, text="登录").grid(row=2, column=1, sticky=EW)
Button(self, text="取消").grid(row=2, column=2, sticky=E)
if __name__ == '__main__':
root = Tk()
root.geometry("400x90+200+300")
app = Application(master=root)
root.mainloop()

  

效果:

取值范围:从0开始的正整数
columnspan 跨列,跨越的列数 columnspan=2 取值范围:正整数
row 单元格的行号 row=2 取值范围:从0开始的正整数
rowspan 跨行,跨越的行数 rowspan=2 取值范围:正整数
ipadx 设置子组件之间的间隔, x方向,默认单位为像素   取值范围:非浮点数,默认0.0
ipady 设置子组件之间的间隔, y方向,默认单位为像素   取值范围:非浮点数,默认0.0
padx 与之并列的组件之间的间隔, x方向或者y方向,默认单位是像素   取值范围:非浮点数,默认0.0
pady 与之并列的组件之间的间隔, x方向或者y方向,默认单位是像素   取值范围:非浮点数,默认0.0
sticky 组件紧贴所在单元格的某一角,对应于东南西北中以及4个角
sticky=E
取值范围:"n","s","w","e","nw","sw","ne","se","center" (默认);“EW”:沾满单元格
         
         
         

place

属性  说明  用法    例子  备注
x, y  组件左上角的绝对坐标(相对于窗口)

x=30,y=30
 
#coding=utf-8
from tkinter import *
root = Tk();root.geometry("500x300")
root.title("布局管理 place");root["bg"]="white"
f1 = Frame(root,width=200,height=200,bg="green")
f1.place(x=30,y=30)
Button(root,text="小灰灰").place(relx=0.5,rely=0,
x=100,y=200,relwidth=0.2,relheight=0.2)
Button(f1,text="小灰灰牛逼").place(relx=0.6,rely=0.7)
Button(f1,text="小灰灰真牛逼").place(relx=0.2,rely=0.2)
root.mainloop()

  

效果:

 非负整数
x和y选项用于设置偏移(像素) ,如果同时设置 relx(rely) 和x(y),那么place将优先计算relx和rely,然后再实现x和y指定的偏移值

relx,rely

 组件左上角的坐标(相对于父容器)

relx=0.6,rely=0.7
 

relx是相对父组件的位置。0是最左边, 0.5是正中间, 1是最右边;

rely是相对父组件的位置。0是最上边, 0.5是正中间, 1 是最下面

width,height  组件的宽度和高度

width=200,height=200
   非负整数
relwidth,relheight  组件的宽度和高度 " (相对于父容器)

relwidth=0.2,
relheight=0.2
   与relx, rely取值类似,但是相对于父组件的尺寸
anchor

控件的摆放方式。默认是居中。左对齐

”w”,右对齐”e”,顶对齐”n”,底对齐”s”。w 和e可以与n和s组合使用

 anchor=SE   取值范围:"n","s","w","e","nw","sw","ne","se","center" (默认);“EW”:沾满单元格

原文链接:https://blog.csdn.net/qq_15181569/article/details/93749774

取值范围:已经pack后的组件对象

Entry小部件:的更多相关文章

  1. Android开发5:应用程序窗口小部件App Widgets的实现

    前言 本次主要是实现一个Android应用,实现静态广播.动态广播两种改变 widget内容的方法,即在上篇博文中实验的基础上进行修改,所以此次实验的重点是AppWidget小部件的实现啦~ 首先,我 ...

  2. 优质Android小部件:索尼滚动相册

    虽然骚尼手机卖的不怎么样,但是有些东西还是做的挺好的,工业设计就不用说了,索尼的相册的双指任意缩放功能也是尤其炫酷.其桌面小部件滚动相册我觉得也挺好的,比谷歌原生的相册墙功能好多了,网上搜了一下也没发 ...

  3. ArcGIS Server开发教程系列(8)ArcGIS API for Javascript-控件(小部件)

    1.     鹰眼 OverviewMap小部件用于在其关联的主地图内较清楚的当前鸟瞰图的范围.当主地图范围变化时,鹰眼图会自动在其空间内更新范围以保持和地图的当前范围保持一致,当鹰眼图空间的地图范围 ...

  4. 在android程序中加入widget(窗口小部件)并与之交互的关键代码

    摘要: widget(窗口小部件)可以增强应用程序的交互性, 是很多应用中都会用到的功能,本文不求大而全,但是会给出程序与widget交互的关键代码 正文: 其实widget是嵌入(embedded) ...

  5. Android 之窗口小部件详解--App Widget

    Android 之窗口小部件详解--App Widget  版本号 说明 作者 日期  1.0  添加App Widge介绍和示例  Sky Wang 2013/06/27        1 App ...

  6. yii YII小部件 创建登录表单表单 Login表单

    YII框架必须遵循其表单的创建方法 登录模型错做与数据库操作模型是一致的,不同的是不跟数据库交互 ,用的是小部件,在创建表单之前,要在用户控制模块完成以下代码 protected --models - ...

  7. YII 小部件实现的注册表

    今天来进行用户注册功能yii集成了很多验证框架,framework/validators下面,这个文件夹的最后一个文件CValidator.php 是总的验证信息,根据请求参数决定需要那种验证 如:u ...

  8. YII 小部件 yii小部件查看方法 小物件做的表单

    要使用小部件,可以先到总文件去找   framework/yiilite文件里面搜索“CAtiveForm” (如果觉得小部件的radio布局有点难看,可以在外面定义,具体可以在控制器里面定义) 如下 ...

  9. Yii2的相关学习记录,alert等美化、confirm异步、session中的flash及小部件的使用(六)

    呃,系统自带的alert.confirm等弹出框实在是难看,作为一个颜控,这能忍? 这里我用的是kartik-v/yii2-dialog,这个是基于bootstrap3-dialog这个来做了一些常用 ...

随机推荐

  1. Kafka消费者没有收到通知的分析

    今天遇到两位三方人员跟我反馈,某微服务的异步接口功能不正常了,由于该异步接口采用Kafka异步消息的方案,对方说没有收到Kafka给消费者的通知,根据此问题,联系了相关人员进行了分析: (一)明确环境 ...

  2. JavaSE学习笔记(12)---线程

    JavaSE学习笔记(12)---线程 多线程 并发与并行 并发:指两个或多个事件在同一个时间段内发生. 并行:指两个或多个事件在同一时刻发生(同时发生). 在操作系统中,安装了多个程序,并发指的是在 ...

  3. HTTP Status 404 – 未找到 spring mvc

    HTTP Status 404 – 未找到 Type Status Report 消息 /houseSale//houseSaleController/houseSaleList 描述 源服务器未能找 ...

  4. 数字孪生 VS 平行系统

    数字孪生和平行系统作为新兴技术,在解决当今人工智能邻域面临的信息量大,干扰信息不确定因素多,与人的参与沟通更加紧密,人机互动更加重视,为了使人们有更好的体验人工智能带来的便利,急需推动信息物理社会的高 ...

  5. LINUX 概述

    初识linux Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户.多任务.支持多线程和多CPU的操作系统.它能运行主要的UNIX工具软件.应用程序和网络协 ...

  6. java集合框架备忘

    List,Set,Map三者的区别? List(对付顺序的好帮手): List接口存储一组不唯一(可以有多个元素引用相同的对象),有序的对象 Set(注重独一无二的性质): 不允许重复的集合.不会有多 ...

  7. 论文阅读笔记(七)【TIP2018】:Video-Based Person Re-Identification by Simultaneously Learning Intra-Video and Inter-Video Distance Metrics

    是由一篇 IJCAI2016 扩的期刊. 该篇会议论文的阅读笔记[传送门] 期刊扩充的部分:P-SI2DL 1.问题描述: 在会议论文中介绍的SI2DL方法采用了视频三元组作为视频关系(是否匹配)的逻 ...

  8. window服务session隔离

    在window服务中抓取窗体是做不到的,因为window系统的session隔离机制:如果想要调用外部程序,可以通过 创建代理进程 进行操作(通过非托管代码CreateProcessAsUser函数进 ...

  9. mysql 获取当前时间加上一个月

    select DATE_ADD(NOW(), interval 1 MONTH) NOW()此处必须为时间格式 date_add() 增加 date_sub()减少 month 月份 minute 分 ...

  10. C++野指针的存在方式和误区

    1. char* x;这样的一定是野指针,指针声明时要直接初始化!或者置null也行! 2. int main() { char *x=new char; delete x; cout<< ...