阅读目录

  • 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 numl.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教学视频

  

转载于:https://www.cnblogs.com/mengd/p/7299319.html

tkinter学习-菜单与画布相关推荐

  1. Python tkinter 学习笔记(2)-- 控件、组件(一)

    Python tkinter 学习笔记(1)-- 第一个窗口之HelloWorld 教程 目录 一.Tkinter 15种基础控件 1. Button 按钮控件 2.Canvas 画图控件 3.Che ...

  2. ps如何修改图片大小尺寸_PS新手入门教程:学习如何修改画布的大小

    PS新手入门教程:学习如何修改画布的大小.在photoshop中,可以把画布理解为一张白纸,而我们要处理的图像可以理解为这张白纸表面上的画.我们修改画布的大小时,图像并不会随着画布的大小而整体变大或缩 ...

  3. Python tkinter 学习笔记(2)-- 控件、组件(二)

    Python tkinter 学习笔记(1)-- 第一个窗口之HelloWorld 教程 Python tkinter 学习笔记(2)-- 控件.组件(一) > 续上一章节 Python tki ...

  4. Python tkinter 学习笔记(3) -- 界面布局1(grid和pack)

    Python tkinter 学习笔记(1)-- 第一个窗口之HelloWorld 教程 Python tkinter 学习笔记(2)-- 控件.组件(一) Tkinter 界面布局(grid\pac ...

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

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

  6. Python3 GUI编程: 自带图形库 tkinter 学习教程

    1.为什么学tkinter tkinter的优缺点 优点:python3 GUI编程需要图形库,常用的有tkinter,wxWidgets,Qt,GTK等等.但是Python自带的库是仅仅只支持Tk的 ...

  7. python gui tkinter_Python GUI tkinter 学习笔记(一)

    第一个python程序 #!/usr/bin/python # -*- coding: UTF-8 -*- #在2.x版本上,编写为:from Tkinter import * #在3.x版本上,编写 ...

  8. python 画布 保存_Python Tkinter使用PIL将画布保存为图像

    我有这个代码,让用户在画布上绘制并将其保存为jpeg文件. 正如在this post中所提到的,我尝试使用PIL在画布和内存中并行绘制,以便我可以将其保存为jpeg而不是postscript.它似乎工 ...

  9. python 菜单按钮打开新窗口_Python Tkinter Menubutton菜单按钮

    Menubutton小部件可以定义为始终向用户显示的下拉菜单.它用于为用户提供选择应用程序中存在的适当选择的选项. Menubutton用于在python应用程序中实现各种类型的菜单.菜单与Menub ...

最新文章

  1. Exchange 2007 被 SMTP中继***一例
  2. 双基因突变患者_双任务干预对携带LRRK2基因突变的帕金森病患者手灵活性的影响...
  3. exit c+_C / C ++中的exit(0)vs exit(1)与示例
  4. mysql5批处理_转关于mysql5.5 的批处理讨论(转载)
  5. Qt工作笔记-进程间的通信(通过QSharedMemory)
  6. paip.版本控件svn删除文件或目录后的恢复
  7. 【九天教您南方cass 9.1】 11 方格网土方计算
  8. 本科课程【数字图像处理】实验1 - 腐蚀与膨胀
  9. 面向对象的15位、18位中国大陆身份证号码解析、验证工具
  10. 核心单词Word List 3
  11. 2018最新苹果APP上架App Store流程(超详细)
  12. python绘制直线的垂线_p countour中的Python垂直线
  13. Electron 桌面应用问题解决方法
  14. 各种常用默认的端口号
  15. 模拟器计算机内存不足,模拟器内存不足要怎么办_怎样修改模拟器的内存大小 - 驱动管家...
  16. NTS-NetTopologySuite中判断shape中的点是否有压盖、重叠
  17. HTML5响应式手机模板:电商网站设计——房地产移动端网页模板(15个页面)
  18. **[游戏测评]**《小小梦魇2》评测 —— 通过游戏AD打造一个真实的梦魇
  19. 【MIKE HYDRO】某河道MIKE HYDRO水质水动力模拟项目-水动力模型构建
  20. 良品铺子或签《爸3》萌娃,电视真人秀植入代言人成新玩法

热门文章

  1. 工信部提醒:用户及时设置 SIM 卡密码,丢失手机后第一时间挂失
  2. 360企业版终端安装说明
  3. java 新浪天气预报接口_根据新浪天气API获取各地天气状况(Java实现)
  4. java51游戏_简单实现美空军也得玩的游戏-谁能坚持超过50秒?(Java)
  5. MySQL查询输入三个数的和_mysql(三)(单表查询、select、where、聚合函数、count、sum、avg、MAX/MIN、分组查询、group by、having、limit)...
  6. 不是说一个源程序中只能有一个public类?怎么内部类可以用public?
  7. 039_Dialog对话框
  8. 044_Properties工具类
  9. 004_Gson树模型
  10. 怎么下载安装激活Adobe After Effects CC 2019教程