# tkinter常用组件
- 按钮
- button(按钮组件)
- RadioButton(单选框组件)
- CheckButton(选择按钮组件)
- Listbox(列表框组件) - 文本输入组件
- Entry(单行文本框组件)
- Text(多行文本框组件) - 标签组件
- Label(标签组件,可以显示图片和文字)
- Message(标签组件,可以根据内容将文字换行) - 菜单
- Menu(菜单组件)
- MenuButton(菜单按钮组件,可以使用Menu代替) - 滚动条
- scale(滑块组件)
- Scrollbar(滚动条组件) - 其他组件
- Canvas(画布组件)
- Frame(框架组件,将多个组件编组)
- Toplevel(创建子窗口容器组件) ##组件布局
- 三种布局
- pack布局(按照方位布局)
- 最简单,代码最少,挨个摆放,默认从上到下,系统自动摆放
- 通用方式: 组件对象.pack(设置, , ,)
- side: 停靠方位,可选值为LEFT,TOP,RIGHT,BOTTON
- fill: 填充方式,X, Y, BOTH, NONE
- expande: YES/NO
- anchor: N, E, S, W, CENTER
- ipadx: x方向的内边距
- ipady: y。。
- padx: x方向的外边界
- pady: y。。。
- place布局(按照坐标布局)
- 明确方位的摆放
- 相对位置布局,随意改变窗口大小会导致混乱
- 使用place函数,分为绝对布局和相对布局
- 绝对布局使用x,y参数
- 相对布局使用relx,rely,relheight,relwidth
- grid(网格布局)
- 通用方式: 组件对象.grid(设置, , ,)
- 利用row, column编号,都是从0开始
- sticky: N,E,S,W表示上下左右,用来决定组件从哪个方向开始
- 支持ipadx,padx等参数,跟pack函数含义一样
- 支持rowspan,columnspan,表示跨行,跨列数量 ## 消息机制
- 消息的传递机制
- 自动发出事件/消息
- 消息由系统负责发送到队列
- 由相关组件进行绑定/设置
- 后端自动选择感兴趣的事件并做出相应反应
- 消息格式
- <[modifier-]---type-[detail]>
- <Button-1]>: Button表示一个按钮事件,1代表的是鼠标左键,2代表中键
- <KeyPress-A>: 键盘A键位
- <Control-shift-KeyPress-A>: 同时按下Control,shift,A三个键位 ##Tkinter的绑定
- bind_all: 全局范围的绑定,默认的是全局快捷键,比如F1是帮助文档
- bind_class: 接收三个参数,第一个是类名,第二个是事件,第三个是操作
- bind: 单独对某一个实例绑定
- unbind: 解绑,需要一个参数,即你要解绑的那个事件
### Entry
- 输入框,功能单一
- entry["show"] = "*",设置遮挡字符
- 案例:输入框 ## 菜单
- 普通菜单
- 第一个Menu类定义的是parent
- add_command 添加菜单项,如果菜单是顶层菜单,则从左向右添加,否则就是下拉菜单
- label: 指定菜单项名称
- command: 点击后响应相对应的函数
- acceletor: 快捷键
- underline: 制定是否菜单信息下有横线
- menu: 属性指定使用哪个作为顶级菜单
- 级联菜单
- add_cascade: 级联菜单,作用是引出后面的菜单
- add_cascade的menu属性: 指明把菜单级联到哪个菜单上
- label: 名称
- 过程
1. 建立menu实例
2. add_command
3. add_cascade ##弹出式菜单
- 弹出式菜单也叫上下文菜单
- 流程
1. 建立菜单并向菜单中添加各种功能
2. 监听鼠标事件
3. 如果右键点击,则根据位置判断弹出
4. 调用Menu的pop方法
- add_separator: 添加分割符 ##canvas画布
- 画布: 可以自由的在画布上面绘制图形的一个舞台
- 通常用create_xx(说明:xx=对象类型),例如line,rectangle 画布五角星案例:
import tkinter
import math as m # 创建面板
baseFrame = tkinter.Tk() # 创建画布
cvc = tkinter.Canvas(baseFrame, width=300, height=300, background="gray")
cvc.pack() center_x = 150
center_y = 150
r = 150 # 依次存放五个点的位置
points = [
# 左上点
center_x - int(r * m.sin(2 * m.pi / 5)),
center_y - int(r * m.cos(2 * m.pi / 5)), # 右上点
center_x + int(r * m.sin(2 * m.pi / 5)),
center_y - int(r * m.cos(2 * m.pi / 5)), # 左下点
center_x - int(r * m.sin(m.pi / 5)),
center_y + int(r * m.cos(m.pi / 5)), # 顶点
center_x,
center_y - r, # 右下点
center_x + int(r * m.sin(m.pi / 5)),
center_y + int(r * m.cos(m.pi / 5)),
] # 创建一个多边形
cvc.create_polygon(points, outline="white", fill="red") # 启动消息循环
baseFrame.mainloop()

Python for Tkinter的更多相关文章

  1. Python GUI - Tkinter tkMessageBox

    Python GUI - Tkinter tkMessageBox: tkMessageBox模块用于显示在您的应用程序的消息框.此模块提供了一个功能,您可以用它来显示适当的消息     tkMess ...

  2. Python GUI - tkinter

    目录: Tkinter 组件 标准属性 几何管理 代码实例: 1. Label & Button 2. Entry & Text 3.Listbox列表 4.Radiobutton单选 ...

  3. python界面Tkinter编程(tkMessageBox对话框使用)

    python界面Tkinter编程(tkMessageBox对话框使用)     转载 https://blog.csdn.net/m_buddy/article/details/80105154 1 ...

  4. python之Tkinter控件学习

    转载自  http://www.cnblogs.com/kaituorensheng/p/3287652.html#_label0 阅读目录 1. 产品介绍 2. 设计规划 3. 相关知识 4. 源码 ...

  5. python使用tkinter做界面之颜色

    python使用tkinter做界面之颜色       from tkinter import *colors = '''#FFB6C1 LightPink 浅粉红#FFC0CB Pink 粉红#DC ...

  6. python使用tkinter无法给顶层窗体的输入框设定默认值

    这几天某同学遇到了一个棘手的问题,困扰了很久.今天终于解决了,我来记录一下坑. 情景:python 使用tkinter为第二层窗体(顶层窗体)中的一个输入框设定默认值时,总是无法设置,而且对输入框获取 ...

  7. Python之Tkinter模块学习

    本文转载自:http://www.cnblogs.com/kaituorensheng/p/3287652.html Tkinter模块("Tk 接口")是Python的标准Tk ...

  8. python库tkinter、pygame中几点需要注意的问题

    恍然之间已经16年快四月份了,已经好久都没有写过东西了.. 最近在用python做一些小的游戏,在网上找了一些Python库,Python中游戏编程最常用的还是pygame了,其次是Tkinter p ...

  9. Linux升级Python提示Tkinter模块找不到解决

    一.安装tkinter 在Linux中python默认是不安装Tkinter模块, [root@li250- ~]# python Python (r266:, Feb , ::) [GCC (Red ...

  10. python的tkinter版本不匹配问题:RuntimeError: test:tk.h version (8.4) doesn't match libtk.a version (8.5)

    Traceback (most recent call last): File "/root/CodeWorkPace/test/TCPClient.py", line 20, i ...

随机推荐

  1. APP漏洞自动化扫描专业评测报告(下篇)

    上篇.中篇回顾:通过收费情况.样本测试后的扫描时间.漏洞项对比以及扫描能力这几个方面对阿里聚安全[1].360App漏洞扫描[2].腾讯金刚审计系统[3].百度移动云测试中心[4]以及AppRisk ...

  2. 《从零開始学Swift》学习笔记(Day 56)—— Swift编码规范之命名规范

    原创文章,欢迎转载.转载请注明:关东升的博客 程序代码中到处都是自定义的名字,取一个有样而且符合规范的名字非常重要. 命名方法非常多,可是比較有名的,广泛接受命名法有: 匈牙利命名,一般仅仅是命名变量 ...

  3. Android下添加新的自定义键值和按键处理流程【转】

    本文转载自: Android下添加新的自定义键值和按键处理流程     说出来不怕大家笑话,我写这篇博客的原因在于前几天去一个小公司面试Android系统工程师,然后在面试的时候对方的技术总监问了我一 ...

  4. Triangle LOVE(拓扑排序)

    Triangle LOVE Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/65536K (Java/Other) Total ...

  5. jQuery不熟点总结

     jQuery 事件 1 .trigger() 方法触发被选元素的指定事件类型. 2 .delegate() 事件委派  1.不占内存2.可以给未来元素(后期动态添加的元素)添加事件. 2.  添加元 ...

  6. Linux Shell Scripting Cookbook 读书笔记 1

    本系列文章为<Linux Shell Scripting Cookbook>的读书笔记,只记录了我觉得工作中有用,而我还不是很熟练的命令 书是很好的书,有许多命令由于我比较熟悉,可能就没有 ...

  7. 关于Html基础语法学习

    晚上做完初赛,好像有点颓,就来学了学html,毕竟博客里面会用到嘛. 首先贴出我所学习的教程 http://www.w3school.com.cn/html/index.asp 我觉得吧,可能以我的记 ...

  8. lua闭包函数

    function createCountdownTimer(second) local ms = second * local function countDown() ms = ms - retur ...

  9. [Offer收割]编程练习赛40

    不到一个小时AK,虽然是VP的,舒服,第一次.都简单的一比,没什么可说的. 查找三阶幻方 #pragma comment(linker, "/STACK:102400000,10240000 ...

  10. css网页布局方式的理解

    一,标准流(默认状态,元素盒按照文档中出现的顺序排列) 块级元素--垂直排版 display:block; 单独一行,可以设置宽高,宽度默认和父元素宽度一致 一般结构性标记都为块级元素,如div,h, ...