tkinter学习-菜单与画布
閱讀目錄
-
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
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的tkinter学习-菜单与画布的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java Struts2 (一)
- 下一篇: html知识点一