阅读目录

  • Menu  菜单控件

  • Menubutton  菜单按钮控件

  • OptionMenu  选项菜单
  • Canvas  画布控件

Menu:

  说明:菜单控件,显示菜单栏,下拉菜单和弹出菜单

  属性:创建一个顶级菜单,需要先创建一个菜单实例,然后使用add()方法将命令和其他子菜单添加进去

            创建一个下拉菜单(或者其他的子菜单),方法是一样的,最主要的区别是它们最后需要添加到主菜单上(而不是窗口上)

  方法:add_cascade(label=' ',...)  

     add_command(label=' ',...)

from tkinter import *
root = Tk()
root.title('山丘')
root.geometry('200x200')
l = Label(root,text='',bg='yellow')
l.pack()
num=0
def show():
global num
l.config(text=num)
num+=1
menubar = Menu(root) #创建一个顶级的窗口
#创建一个下拉菜单'File',然后让它添加到顶级窗口上
filemenu = Menu(menubar,tearoff=1) #tearoff是在'File'菜单上加了一个小横杠,为0就是不加,和平时看到的一样
menubar.add_cascade(label='File',menu=filemenu)
filemenu.add_command(label='New',command=show)
filemenu.add_command(label='Open',command=show)
filemenu.add_command(label='Save',command=show)
filemenu.add_separator() #这个是分割线
filemenu.add_command(label='Rxit',command=root.quit)
editmenu = Menu(menubar,tearoff=0)#创建一个下拉菜单'Edit',然后让它添加到顶级窗口上
menubar.add_cascade(label='Edit',menu=editmenu)
editmenu.add_command(label='Cut',command=show)
editmenu.add_command(label='Copy',command=show)
editmenu.add_command(label='Paste',command=show)
root.config(menu=menubar)#显示菜单,
mainloop()

点击小横杠后的结果:

            

  这个菜单不仅可以添加常见的命令菜单,和可以添加单选或多选按钮

from tkinter import *
root = Tk()
def show():
print('被调用了')
#创建一个顶级的菜单
menubar = Menu(root)
#创建checkbutton关联变量
openVar = IntVar()
saveVar = IntVar()
exitVar = IntVar()
#创建一个下拉菜单‘文件’,然后将它添加到顶级的菜单上
filemenu = Menu(menubar,tearoff = True)
menubar.add_cascade(label='文件',menu=filemenu)
filemenu.add_checkbutton(label='打开',command=show,variable=openVar)
filemenu.add_checkbutton(label='保存',command=show,variable=saveVar)
filemenu.add_checkbutton(label='退出',command=root.quit,variable=exitVar)
#创建radiobutton关联变量
editVar = IntVar()
editVar.set(1)
#创建一个下拉菜单‘编辑’,然后将它添加到顶级的菜单上
editmenu = Menu(menubar,tearoff = False)
menubar.add_cascade(label='编辑',menu=editmenu)
editmenu.add_radiobutton(label='剪切',command=show,variable=editVar,value=1)
editmenu.add_radiobutton(label='拷贝',command=show,variable=editVar,value=2)
editmenu.add_radiobutton(label='粘贴',command=show,variable=editVar,value=3)
root.config(menu=menubar)#显示菜单
mainloop()

结果:

      

Menubutton:

  说明:菜单按钮控件,由于显示菜单项,它可以放在窗口的任意位置,并弹出下拉菜单

from tkinter import *
root = Tk()
def callback():
print('被调用了')
mb = Menubutton(root,text='点我',relief = RAISED)#这个是样式
mb.pack()
filemenu = Menu(mb)
filemenu.add_command(label= '打开',command=callback)
filemenu.add_command(label='保存',command=callback)
filemenu.add_separator()
filemenu.add_command(label='退出',command=callback)
mb.config(menu=filemenu)
mainloop()

结果:

     

OptionMenu:

  说明:这是下拉菜单的改版,主要用于记录用户选择了什么

from tkinter import *
root = Tk()
variable = StringVar()
variable.set('one')
w = OptionMenu(root,variable,'one','two','there')
w.pack()
def show():
print(variable.get())
Button(root,text='点我',command=show).pack()
mainloop()

结果:

         

  还有就是将很多选项添加到选项菜单中

from tkinter import *
root = Tk()
l = Label(root,text='',bg='yellow')
l.pack()
OPTIONS = ['A','B','C','D','E']
variable = StringVar()
variable.set(OPTIONS[0])
w = OptionMenu(root,variable,*OPTIONS)#这里注意
w.pack()
def show():
l.config(text=variable.get())
Button(root,text='点我',command=show).pack()
mainloop()

结果:

    

Canvas:

  说明:画布控件,显示图形元素如线条或文本

  属性:在Canvas上绘制对象,可以用create_xxx()的方法(xxx表示对象的类型)常用的:

  acr:弧形,扇形,弦

  image:PhotoImage的实例化对象

  line:线

  oval:圆形或椭圆形

  rectangle:矩形

  text:文本

  window:组件

  fill:填充颜色

  outline:轮廓线

from tkinter import *
root = Tk()
w = Canvas(root,width=200,height=100)
w.pack()
#普通的直线,以及矩形
line1 = w.create_line(0,50,200,50,fill='green')
line2 = w.create_line(100,0,100,100,fill='red',dash=(4,4))#这个是设置成虚线
rect1 = w.create_rectangle(50,25,150,75,fill='blue')
mainloop()

结果:

    

  如果你希望修改它们,可以用coords(),itemconfig(),move(),方法来移动画布上的对象

from tkinter import *
root = Tk()
w = Canvas(root,width=200,height=100)
w.pack()
#普通的直线,以及矩形
line1 = w.create_line(0,50,200,50,fill='green')
line2 = w.create_line(100,0,100,100,fill='red',dash=(4,4))
rect1 = w.create_rectangle(50,25,150,75,fill='blue')
#关于修改的方法
w.coords(line1,0,25,200,25)
w.itemconfig(rect1,fill='red')
w.delete(line2)
mainloop()

结果:

    

  当然了,还可以设置圆形,参数是指定一个限定的矩形(Tkinter会自动的在这个矩形里绘制一个椭圆)

from tkinter import *
root = Tk()
w = Canvas(root,width=650,height=350)
w.pack()
w.create_rectangle(200,100,600,300,dash = (4,4))
w.create_oval(200,100,600,300,fill='pink')
w.create_text(400,200,text='越过山丘\n才发现无人等候',font=('微软雅黑',20))
w.create_oval(0,0,200,200,fill='green')
w.create_oval(75,75,125,125,fill='yellow')
w.create_text(100,100,text='山丘')
mainloop()

结果:

    

  还支持画图,绘制超小的椭圆形的点,通过获取鼠标位置<B1 - Motion>

from tkinter import *
root = Tk()
w = Canvas(root,width=800,height=400)
w.pack()
def paint(event):
x1,y1 = (event.x - 1),(event.y - 1)
x2,y2 = (event.x + 1),(event.y + 1)
w.create_oval(x1,y1,x2,y2,fill='green')
w.bind('<B1-Motion>',paint)
Label(root,text='拖住鼠标左键进行移动,绘制你心中的蓝图').pack(side=BOTTOM)
mainloop()

结果:

    

  有了这些,就可以随心所欲的画图了

from tkinter import *
root = Tk()
w = Canvas(root,width=400,height=400)
w.pack()
w.create_line(0,0,400,400,fill='green',width=2,dash=(4,4))#线
w.create_line(400,0,0,400,fill='red',width=2,dash=(4,4))
w.create_rectangle(0,0,100,100,fill='green')    #矩形
w.create_rectangle(300,0,400,100,fill='blue')
w.create_rectangle(0,300,100,400,fill='yellow')
w.create_rectangle(300,300,400,400,fill='red')
w.create_oval(100,100,300,300,fill='black')    #球
w.create_text(200,200,text='山丘',fill='white',font=('微软雅黑',20))  #文本
mainloop()

结果:

    

参考文献:

  小甲鱼的python教学视频

  

tkinter学习-菜单与画布的更多相关文章

  1. Python Tkinter 学习成果:点歌软件music

    笔者工作业余时间也没什么爱好,社交圈子也小,主要娱乐就是背着自己带电瓶的卖唱音响到住地附近找个人多的位置唱唱KtV. 硬件上点歌就用笔记本电脑,歌曲都是网上下载的mkv格式的含有两个音轨的视频.因此点 ...

  2. tkinter学习-Lable&Button

    tkinter学习-La&Bu 我的第一个Tkinter程序 Label组件的使用 Button组件的使用 1.我的第一个Tkinter程序 常用的属性: title:设置窗口的标题 geom ...

  3. Python -- Gui编程 -- Tkinter的使用 -- 菜单与画布

    1.菜单 tkMenu.py import tkinter root = tkinter.Tk() menu = tkinter.Menu(root) submenu = tkinter.Menu(m ...

  4. tkinter学习(3)scale尺度条和menu菜单

    1.scale学习(尺度条)1.1 代码: #第1步:导出模块 import tkinter as tk #第2步:定义窗口,及其标题.大小和位置 win = tk.Tk() win.title('s ...

  5. python之tkinter学习目录

    前言 下面的目录结构,采用的学习视频资料是网易云课堂中[莫凡]老师的,在目录的最下面的地方给出了对应的链接! 学习是逐渐积累起来的,代码也是!下面的每一篇中的对应代码,都秉承着这样的一个理念:代码是成 ...

  6. Python Tkinter学习笔记

    介绍 入门实例 显示一个窗口,窗口里面有一个标签,显示文字 import tkinter as tk # 一个顶层窗口的实例(Top Level),也称为根窗口 app = tk.Tk() # 设置窗 ...

  7. Python:GUI之tkinter学习笔记1控件的介绍及使用

    相关内容: tkinter的使用 1.模块的导入 2.使用 3.控件介绍 Tk Button Label Frame Toplevel Menu Menubutton Canvas Entry Mes ...

  8. tkinter学习系列之(八) Canvas控件

    目录 目录 前言 (一)carves创建方法 (二)carves的画图方法 目录 前言 由于最近想在tkinter里内嵌matplotlib,由于用到tkinter里的carves控件,先学习一下. ...

  9. tkinter学习(4)frame、pack、canvas学习

    1.frame和pack学习 1.1 代码: import tkinter as tk window = tk.Tk() window.title('my window') window.geomet ...

随机推荐

  1. linux常用命令(ubuntu)

    编辑: vi [path] vim [path] :q 退出 :wq 保存退出 查看进程 ps ps -aux | grep mem 查看全部含 “mem”的进程 ps –aux  查看全部 在系统启 ...

  2. [模板](luogu P3387)縮點

    前言:對於這週的咕咕咕表示好像沒什麼好表示的,完全沒有靈感a......寫東西真的好難啊......於是又玩了半天鬼泣4???還挺好玩的 來源:題解 题目背景 缩点+DP 题目描述 给定一个n个点m条 ...

  3. Tinghua Data Mining 4

    贝叶斯 决策树 知道三文鱼和金枪鱼颜色 让你去猜 B命中的概率不能直接减去四分之三 因为有可能同时命中 A B 命中不是互斥事件 即便体检报告是阳性,真正得癌症的概率也很小,只有0.21 绝大多数的阳 ...

  4. CSS以及JS各种库的在线CDN引用地址

    JS类—— html5.js,让你的IE浏览器支持H5新特性:http://html5shiv.googlecode.com/svn/trunk/html5.js   (记得要注释判断哦) JQuer ...

  5. 086 Partition List 分隔链表

    给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前.你应当保留两个分区中每个节点的初始相对位置.例如,给定1->4->3->2-&g ...

  6. [译]Understanding ECMAScript6 基本知识

    基本知识 ECMAScript 6在ECMAScript 5之上做了大量的改变.一些改变很大,比如添加新的类型或者语法,而其它的非常小,提供了语言之上的渐进改进.这个章节包含了那些渐进改进,它们可能不 ...

  7. Linux--NiaoGe-Service-07网络安全与主机基本防护

    Linux系统内自带的防火墙有两层: 第一层:数据包过滤防火墙:IP Filtering和Net Filter 要进入Linux本机的数据包都会先通过Linux预先内置的防火墙(Net Filter) ...

  8. 牛客网Java刷题知识点之方法覆盖(方法重写)和方法重载的区别

    不多说,直接上干货! https://www.nowcoder.com/ta/review-java/review?query=&asc=true&order=&page=6 ...

  9. vscode设置html默认浏览器

    Vscode版本:1.30.2,设置方法:file→preference→settings,剩余设置如下图.

  10. 浅谈C++ 内存泄漏及其检测工具

    浅谈C++ 内存泄漏及其检测工具 http://wenku.baidu.com/link?url=1DGkOOvd_ITZyB8IHAwfhCOx2tfO6id8UfuyQkAMHZU6sasaAXz ...