




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
(2007-10-04熟悉pythonpython的( 系列的特點他不是一本經(jīng)過文字潤色的文章,全部是代碼,作者在必要的時候使用注釋來解釋以組件為章節(jié)進行介紹,每個組件又分為不同的例子,各個例子可以單獨使用,分別使用序號標各個例子的使用“注釋基本上包含了TKinter的所有的控件根據(jù)每個控件的使用方法選擇性的介紹了其屬性和方法,沒有全部介紹,全部的介紹查看Tkinter的官方參考 Tkinter參考書籍 參考為最后祝各位TkPythonPython"copy"與"reference"(2007-09-22每個對象對應一個實體,一個實體可以對應多個別名,pythonC++語言的參數(shù)和引用的之分,python(aliase)。對于簡單(或者稱為基本)和不可修改類型,python“copy”別名的方式;對于復合和可修改類型,pythonreference”別名x=y=xprintx,y#10,10y=printx,y#10,40x10,y40y=x是對象 ,x與y分別使用不同的對象實體,故y只改變后,x值還為10使用“referencePointPointclassPoint:a=a.x=Pointb=print#使用別名 b.x=printa.x,b.xbaPointb.x=40時,bx40xyPythonPython面向對象初 (2007-09-23classPoint:Point屬性的屬性xyclass#定義xyx=y=實例(instance),xsetXxgetX。class#定義xyx=y=defsetX(self,x_):self.x=x_defgetX(self):returnself.xdefsetY(self,y_):self.y=y_def
returndefsetXY(self,x_,y_):注意:這個類方法如何類屬性,使用self.x,x。pythonC++不同,類數(shù)中創(chuàng)建了一個變量x,并將其值設置為_x。同樣對于類方法之間互相selfdefout_setX(self,x_):self.x=hout_setXclassPoint:x=y=setX= Pointpt=#設置坐標xpt.x=#獲取坐標xprint defprint'f'deff(x):printTypeError:f()takesexactly1argument(0ffdefprint'f'deff(x):print x=10##x=20 C++(constrctor)pythoninit,如下代碼,在創(chuàng)建對象時將類屬性初始化classx=y=
init(self,x_,y_):self.x=x_self.y=(x,y)設置為(20,20)pt=Point(20,20)print類的成員(屬性和方法),pythonpublic,即屬性與方法可以被直接,這一點與
classx=def self.x=x_defself.setX(x_)defgetX(self): returnself.xpt=Point()#直接 x#pt.xxAttributeError:Pointinstancehasnoattributex' #pt.setX(pythonprintpt.getX()printpt.getX()classPoint:passzPoint.z=30#創(chuàng)建類對象pt=Point()pp=Point() print z,ppptzprintpt.z,pp.zclassPoint:passpt=Point()pp=pt.z= #print#AttributeError:classPointhasnoattribute'z'printpt.z #printpp.z#AttributeError:PointinstancehasnoattributeclassclassDerivedClassName(BaseClassName):pass classPoint:x=y=defsetX(self,x_):self.x=x_defgetX(self):returnself.xclassCircle(Point):r=5pt=cl= printcl.x,cl.y printcl.x,cl.y Circle屬性'''classPoint:x=y=defsetX(self,x_):self.x=x_defgetX(self):returnself.xclassCircle(Point):x=40y=r=pt=cl= printcl.x,cl.y#40,50 父類Point屬性'''classPoint:x=y=defsetX(self,x_):self.x=x_defgetX(self):returnself.xclassCircle(Point):x=40y=r= def#x,y已經(jīng)被Circle重載,顯示使用父 父類屬printPoint.x,Point.y#創(chuàng)建子類對象cl= #10,20C++語言中的子類會自動調用父類的構造函數(shù),python中的initinit,如果要調用必須顯示的調用父類的 classPoint:
init(self):print'Point'class
initinitPoint.init(self)print'Circle'cl=Circle()#Point#CircleclassGraphic:draw=Graphicdrawclassx=y=draw
init(self):self.draw=self.draw
printGraphicdrawclassCircle(Point):r=draw
init(self):self.draw=self.draw
printgp=Graphic()pt=Point()clcl=Circle()#TypeError:'NoneType'objectisnotcallable#調用Point的drawclassclassCircle(Point):passclassCylinder(Circle):passclasspt=Point()cl=Circle()cy=Cylinder()definit(self): #TkinterLabeltext fromTkinterimport*Tkroot=IDE。label=Label(root,text=' oTkinter')label,必須含有此語句#2.master,即這個控件屬于哪一個#3.GM(geometrymanager)有一個控件產(chǎn)生了 fromTkinterimport*root=Tk() oTkinter')fromTkinterimport*Tkroot=IDE。labelLabel(root,bitmap'error')errorbitmpa'error'替換。Label(root,image bm=PhotoImage(file='c:\\python.gif') label=Label(root,image=bm) label.bmbm#TclError:imagepyimageXXdoesn'texistbitmap bm=BitmapImage(file='c:\\python2.bmp') label=Label(root,bitmap=bm) label.bm= #TclError:formaterrorinbitmapdata雖然二者均沒有起作用,還是要說明一下,bitmapimagebg:container)fromTkinterimport*root=Tk()Label(root,fg='red',bg='blue',text=' oIamTkinter').pack()Label(root,fg='red',bg='#FF00FF',text=' oIamTkinter').pack()(Windows 使用label=Label(root,fg='red',bg='#FF00FF',text= oIam fromTkinterimport*root=Tk()LabelLabel(root,text='red',bg='red').pack()Label(root,text='blue',bg='blue').pack()Label(root,textyellow',bg'yellow').pack()LabelwidthheightLabel(root,bg='red',width=10,height=3).pack()Label(root,bg'blue',width10,heightLabel(root,bg='yellow',width=10,height=3).pack() 指定文本(text)與圖像(bitmap/image)是如何在LabelNone,image/bitmap(text)將被覆蓋,只顯示圖像了??梢允褂玫闹担? label=Label(root,text='Error',compound='left',bitmap='error')fromTkinterimport*root=Tk()Label(root,textbotton',compound'bottom',bitmaperror').pack()Label(root,texttop',compoundtop',bitmap'error').pack()Label(root,textright',compound'right',bitmap'error').pack()Label(root,textleft',compound'left',bitmap'error').pack()Label(root,text='center',compound='center',bitmap=在Tk004中,使用width和heigth來指定控件的大小,如果指定的大小 Label(root,bg='eto ',width10,height3).pack()
fromTkinterimport*root=Tk()Label(root,text= e ',bg='yellow',width=3,wraplength80,justifyleft').pack()Label(root,text=' eto ',bg='red',width=40,height=3,wraplength=80,anchor='w').pack()Label(root,text= e ',bg='blue',width==3,wraplength=80,anchor='e').pack() #Button'''1.ButtonfromTkinterimport* print' obutton'root=Button(root,text=' oButton',command= obutton',以上為Button使用方法, fromTkinterimport*root=Tk()#下面的relief=FLAT設置,就是一個Label了!Button(root,text=' obutton',relief=FLAT).pack()fromTkinterimport*root=Tk()#flat,groove,raised,ridge,solid,orsunkenButton(root,text=' obutton',relief=FLAT).pack()Button(root,text=' obutton',relief=GROOVE).pack()Button(root,text=' obutton',relief=RAISED).pack()Button(root,text=' obutton',relief=RIDGE).pack()Button(root,text=' obutton',relief=SOLID).pack()Button(root,text= oimage:gifimgPhotoImage(root,filebitmap:X11bitmap,WindowsBitmapWindowsBitmapxbm.linuxX11bitmapbitmapbp=BitmapImage(file="c:\\python2.xbm")Button(root,bitmap=bp).pack()BITMAP="""#defineim_width#defineim_height32staticcharim_bits[]=bmp=BitmapImage(data=BITMAP)Button(root,bitmap=bmp)'''3.LabelButtoncompound'''fromTkinterimport*root=Button(root,text='botton',compound='bottom',bitmap='error').pack()Button(root,text='top',compound='top',bitmap='error').pack()Button(root,text='right',compound='right',bitmap='error').pack()Button(root,text='left',compound='left',bitmap='error').pack()Button(root,text='center',compound='center',bitmap='error').pack()fromTkinterimportdefprint'button1clicked'defcb2(event):print'button2clicked'defcb3():print'button3clicked'root=Tk()b1=Button(root,text='Button1',command=cb1)b2=Button(root,text='Button2')b3=Button(root,text='Button3',command=cb3) 響 fromTkinterimportdefprint'event.time=',event.timeprint'event.type=',event.typeprint'event.WidgetId=',event.widgetprint'event.KeySymbol=root=b=Button(root,text=犯了個錯誤,將<Return>寫成<Enter>了,結果是:當鼠標進入Button區(qū)域后, # fromTkinterimport*root=Tk()b1=Button(root,text='30X1',width=30,height=2)b2=Button(root,text='30X2')b2['width']=30b2['height']=3b3=Button(root,text='30X3')b3.configure(width=30,height=3)#上述的三種方法同樣也適合其他的控件'''6.ButtonfromTkinterimport*root=Tk()forain['n','s','e','w','ne','nw','se','sw']:text='anchor',anchor=a,width=30,height=#Button(root,text='anchor',width=30,height#Button(root,text='anchor',anchor='center',width=30,height=4).pack()#Button(root,text='anchor',anchor='n',width=30,height=4).pack()#Button(root,text='anchor',anchor='s',width=30,height=4).pack()#Button(root,text='anchor',anchor='e',width=30,height=4).pack()#Button(root,text='anchor',anchor='w',width=30,height=4).pack()#Button(root,text='anchor',anchor='ne',width=30,height=4).pack()#Button(root,text='anchor',anchor='nw',width=30,height=4).pack()#Button(root,text='anchor',anchor='se',width=30,height=4).pack()#Button(root,text='anchor',anchor='sw',width=30,height= fromTkinterimport*root=Tk()bfg=Button(root,text='changeforeground',fg='red')bbg=Button(root,text='changebackgroud',bg='blue')'''8.Button5Button:0,2,4,6,8fromTkinterimport*root=forbin[0,1,2,3,4]:text=string(b),bd=b).pack()'''9.ButtonfromTkinterimportroot=forrin['raised','sunken','groove','ridge']:text=r,relief=r,width=30).pack()'''10.ButtonfromTkinterimport*root=Tk()defstatePrint():printforrin['normal','active','disabled']:text=r,state=r,width=command=statePrint).pack()ButtonstatePrint,normalactivedisablefromTkinterimport*root=Tk()defifb['text']==print'change'print'text'v=b=Button(root,textvariable= mand=changeText) Entry#Entry'''1.EntryfromTkinterimport*root=Tk()Entry(root,text='inputyourtexthere').pack()EntryEntry'inputyourtexthere',運行此代碼,并沒有看到文本的顯示,由此可知與LableButton不同,EntrytextEntry'''2.EntrytextvariableEntryfromTkinterimport*root=e=entry=Entry(root,textvariable=e)e.set('inputyourtexthere')#上面的例子中將eEntry綁定,然后將e值設置為'inputyourtexthere',程Entrystate'readonly'fromTkinterimport*root=Tk()e=entry=Entry(root,textvariable=e)e.set('inputyourtexthere')entry['state']='readonly''''4.設置 show來指定。fromTkinterimport*root=Tk()e=entry=Entry(root,textvariable=e)e.set('inputyourtexthere')entry['show']='*'formaskin['*','#','$']:e=entry=Entry(root,textvariable=e)entry['show']=maskvalidate來校驗輸入的內容validateText回調函數(shù)fromTkinterimport*root=Tk()e=defvalidateText(contents):printcontentsreturnentry=Entry(root,validate='key',textvariable= mand=文檔中說明使用validate來接受的 mand來確定輸入的內容是否合 Checkbutton,顯示文本為"python"fromTkinterimport*root=Checkbutton(root,text='python').pack()'''2.CheckbuttonfromTkinterimport*defprint'youcheckthisbutton'root=Tk()Checkbutton(root,text='checkpython',command=callCheckbutton).pack()'''3.CheckbuttontextfromTkinterimport*defv.set('checkroot=v=StringVar()v.set('checkpython') '''4.上述的textvariable使用方法與Button的用法完全相同,使用此例是為了區(qū)別本身綁定,Checkbutton:OnOffOn1,Off0,如:'''#顯示Checkbutton的值fromTkinterimport*root=Tk()v=v=defcallCheckbutton():printv.get()variable=text='checkbuttonvalue',command=callCheckbutton).pack()'''5.Checkbutton的值不僅僅是1或0,可以是其他類型的數(shù)值,可以通過onvalue和offvalue屬性設置Checkbutton的狀態(tài)值,如下代碼將On設置為'python',Off值設置為fromTkinterimport*root=Tk()v=StringVar()defcallCheckbutton():printv.get()variable=text='checkbuttononvalue offvalue= #Radiobutton'''1.Radiobutton'''fromTkinterimport*root=Radiobutton(root,text='python').pack()Radiobutton(root,text='tkinter').pack()Radiobutton(root,text='widget').pack()'''2.RadiobuttonfromTkinterimport*root=RadiobuttonRadiobuttonvvalue=1的按鈕v=IntVar()foriinRadiobutton(root,variable=v,text='python',value=fromTkinterimport*root=Tk()vLang=IntVar()vOS=IntVar()forvin foriinrange(3): variable=v,value=i,text='python'+'''4.alue,則這兩個按鈕的工作方式完全相同'''#-*-coding:cp936-*-fromTkinterimport*root=Tk()v=IntVar()foriinrange(3):variable=v,value=1,text='python'+foriinrange(3):variable=v,value=i,text='python'+str(2+'''5.CheckbuttonRadiobutton#-*-coding:cp936-*-fromTkinterimport*root=Tk()v=IntVar()defprint'callr1'defr2():print'callr2'defr3():print'callr3'defr4():print'callr4'i=0forrin[r1,r2,r3,r4]:variable=text='radiobutton',value=i,commandcommand=variable=text='radiobutton',value=i,command=i+='''6.Radiobuttonindicatoron,缺省情況下為1,如果將這個屬性改為0,則其外觀是Sunken'''fromTkinterimport*root=Tk()v=IntVar()foriinrange(3):variable=v,indicatoron=0,text='python&tkinter',value=i '''1.Listbox,item'''fromTkinterimport*root=lb=foritemin['python','tkinter','widget']:'''2.Listbox,selectmaod'''fromTkinterimport*root=lb=Listbox(root,selectmode=MULTIPLE)foritemin['python','tkinter','widget']:item,MULTIPLEitem,Checkbox'''3.selectmodeBROWSEListbox位置(不是移動item屬性也是Listbox在默認設置的值,這個程序與1.程序運行的fromTkinterimport*root=Tk()lb=Listbox(root,selectmode=foritemin['python','tkinter','widget']:BROWSESINGLE,但不支持鼠標移動選中位置。fromTkinterimport*root=lb=Listbox(root,selectmode=foritemin'''4.'''4.selectmodeEXPANDEDListboxShiftControl。'''fromTkinterimport*root=lb=Listbox(root,selectmode=EXTENDED)foritemin['python','tkinter','widget']:#運行程序,點中“python",shift"widget#運行程序,點中"python",control+點擊"widgetpythonwidget,第二項tkinterinsertListboxitem,這個函數(shù)有兩個屬性一個#有兩個特殊的值ACTIVEEND,ACTIVEitem(即使用當前選中的索引作為插入位置;END#ListboxListboxitem,ListboxfromTkinterimport*root=Tk()lb=foritemin['python','tkinter','widget']:itemstringitemfromTkinterimport*root=Tk()lb=Listbox(root)foriin delete0END,即可fromTkinterimport*root=Tk()lb=Listbox(root)foriinListboxMULTIPLEEXTENDED,selection_setListboxfromTkinterimport*root=Tk()lb=Listbox(root)foriin'''8.ListboxitemfromTkinterimport*root=lb=Listbox(root)foriinprintlb.size()Listbox10item,然后刪除索引為3item,最后的打印結果為9,即當Listbox9項fromTkinterimport*root=Tk()lb=Listbox(root)foriinprintlb.get(3)fromTkinterimport*root=Tk()lb=Listbox(root)foriinprintlb.get(3,7)#返回值為('300',400','500','600'700tuple'''10.itemfromTkinterimport*root=lb=Listbox(root)foriinprintlb.curselection()#返回值為 '8'),而不'''11.fromTkinterimport*root=lb=Listbox(root)foriinprintprint'''12.Listbox#-*-coding:cp936-*-fromTkinterimport*root=v=lb=Listbox(root,listvariable=v)foriinrange(10):print#輸出:('0'100','200','300',400',500'600',700','800', 綁定#它不支持commandbind#-*-coding:cp936-*-fromTkinterimport*root=Tk()defprintlb.get(lb.curselection())lb=Listbox(root)foriinrange(10): '''1.Scale'''fromTkinterimport*root=Tk()#-*-coding:cp936-*-fromTkinterimport*root=Tk()from_=-500,#設置最大值to=500,#設置最小值resolution5,orientHORIZONTAL'''3.Scale*coding:cp936*-fromTkinterimport*root=Tk()v=StringVar()from_=0,#設置最小值to100.0,resolution=0.0001,#設置步距值orientHORIZONTAL,variable=v#綁定變量printv.get()#-*-coding:cp936-*-fromTkinterimportroot=defprintScale(text):print'text=',textprint'v=v=StringVar()from_=0,#設置最小值to100.0,resolution=0.0001,#設置步距值orientHORIZONTAL,variable=v,#綁定變量commandprintScaleprintv.get()'''5.控制顯示位數(shù),可以理解為:Scaledigits8位形式顯示,在最后一位#-*-coding:cp936-*-fromTkinterimport*root=defprintScale(text):print'text=',textprint'v=v=StringVar()from_=0,#設置最小值to100.0,resolution=0.0001,#設置步距值orientHORIZONTAL,digits=8,#設置顯示的位數(shù)為8variable=v,#綁定變量commandprintScaleprintv.get()#-*-coding:cp936-fromTkinterimportroot=from_=0,#設置最大值to100.0,orient=HORIZONTAL,#設置水平方向label='choice:',#設置 #-*-coding:cp936-*-fromTkinterimport*root=Tk()sl=sl.set(50)#將Scale的值設置為50 '''1.Spinbox'''fromTkinterimport*root=Tk()控制值的改變。'''2.Spinbox#-*-coding:cp936-*-fromTkinterimport*root=Tk()from_0,to=100,#設置最大值increment55,Scaleresolution#-*-coding:cp936-*-fromTkinterimport*root=Tk()sb=values=(0,2,20,40,-increment=)Spinboxtupleprintsb['values']#顯示的第一個值為0,up2,20,40,-1,不再是增2tupletuple'''4.Spinbox#-*-coding:cp936-*-fromTkinterimport*root=Tk()v=sb=values=(0,2,20,40,-increment=2,textvariable=v)printv.get()SpinboxtuplevsbSpinbox20,運行程序,Spinbox值顯示為20up40,#-*-coding:cp936-*-fromTkinterimport*root=Tk()v=sb=values=(0,2,20,40,-increment=2,textvariable=v)printv.get()Spinboxtuple'''5.Spinbox#-*-coding:cp936-*-fromTkinterimport*root=Tk()defprintSpin():printsb=from_0,to=10,#最大值commandprintSpin#)SpinboxprintSpin'Spinbox'Scale'''6.Spinboxvalues#-*-coding:cp936-*-fromTkinterimport*root=Tk()defget()方法來得到當前的顯示值printsb.get()sb=from_0,to=10,#最大值commandprintSpin#)delete,Spinbox1234,upSpinbox235,再#-*-coding:cp936-*-fromTkinterimport*root=Tk()defprintSpin():printsb=from_1234,to=9999,#最大值increment=1,commandprintSpin#)#-*-coding:cp936-*-fromTkinterimport*root=sb=from_1234,to=9999,#最大值increment=1)printsb.get()delete#-*-coding:cp936-*-fromTkinterimport*root=Tk()defdelete()方法刪除指定索引的字符printsb.get()sb=values=command=)Spinbox#-*-coding:cp936-*-fromTkinterimport*root=Tk()defdelete()方法刪除指定索引的字符printsb.get()sb=
values=( commandprintSpin) #-*-coding:cp936-*-fromTkinterimport*root=Tk()defget()方法來得到當前的顯示值printsb=from_1234,to=9999,#最大值increment=1,commandprintSpin#)SpinboxprintSpin #-*-coding:cp936-*-fromTkinterimport*root=Tk()defget()方法來得到當前的顯示值printsb=from_1234,to=9999,#最大值incrementincrement=commandprintSpin) '''1.Scrollbar'''fromTkinterimport*root=Tk()Scrollbar,slider。fromTkinterimport*root=sl=Scrollbar(root)fromTkinterimport*root=Tk()sl=Scrollbar(root,orient=HORIZONTAL)#-*-coding:cp936-*-fromTkinterimport*root=Tk()defscrollCall#printmoveto,posprintsl.get()sl=Scrollbar(root,orient= mand=scrollCall)scrollCallScrollbar#-*-coding:cp936-*-fromTkinterimport*root=Tk()lb=Listbox(root)sl=Scrollbar(root)sl.pack(side=RIGHT,fill=#sideScrollbarfillWM#下面的這句是關鍵:指定Listbox的yscrollbar的回調函數(shù)為Scrollbar的set mand']=sl.setforiinrange(100):lb.pack(side=ScrollbarcommandListbaryviewsl['command']=lb.yview'''5.這樣理解二者之間的關系:當Listbox改變時,Scrollbar調用set以改變slder的位置;當Scrollbar改變了slider的位置時,Listbox調用yview以顯示新的list項,為 mad與scrollbar的set解除綁定,看看會有什么效果#-*-coding:cp936-*-fromTkinterimport*root=Tk()lb=Listbox(root)sl=Scrollbar(root)sl.pack(side=RIGHT,fill= mand']=sl.setforiinrange(100):lb.pack(side=LEFT)sl['command']=lb.yview 使用Scrollbarslider來移動Listbox的視圖。#-*-coding:cp936-*-fromTkinterimport*root=Tk()lb=Listbox(root)sl=Scrollbar(root)sl.pack(side=RIGHT,fill= mand']=sl.setforiinrange(100):lb.pack(side=LEFT)#sl['command']=lb.yview圖改變的消息,調用了自己的set函數(shù)。之之(2007-10-02 篇 #添加菜 #-*-coding:cp936-*-fromTkinterimport*root=Tk() print bar foritemin['Python','PHP','CPP','C','Java','JavaScript','VBScript']:mand(label= mand= ']= fromTkinterimport*root=Tk() print bar bar,tearoff=foritemin['Python','PHP','CPP','C','Java','JavaScript','VBScript']:mad(label= mand= # bar ,即 bar.add_cascade(label='Language', =file ']= '''3.Checkbutton#-*-coding:cp936-*-fromTkinterimport*root=Tk()defprintItem():print'Python=',vPython.get()print'PHP=',vPHP.get()print'CPP=print'C=',vC.get()print'Java=',vJava.get()print'JavaScript=',vJavaScript.get()print'VBScript=',vVBScript.get()bar vPython=StringVar() = =StringVar() = =StringVar()vJavaScript=StringVar() =StringVar() bar,tearoff=0)fork,vin{'Python':vPython, .add_checkbutton(label= mand=printItem,variable=v) bar的 屬性指定為file ,即file bar的下拉菜單bar.add_cascade(label='Language', =file ']= CheckbuttonprintItemCheckbutton'''4.Radiobutton#-*-coding:cp936-*-fromTkinterimport*root=Tk()bar= vLang=StringVar()defprintItem():print'vLang=',vLang.get() bar,tearoff=0)forkin .add_radiobutton(label= mand=printItem,variable=vLang) bar的 屬性指定為file ,即file bar的下拉菜單bar.add_cascade(label='Language', =file ']= #-*-coding:cp936-*-fromTkinterimport*root=bar defprintItem():print bar,tearoff=forkin['Python','PHP','CPP','C','Java','JavaScript','VBScript']:mand(label= mand=printItem) bar.add_cascade(label='Language', =file ']= 6.將以上的例5#-*-coding:cp936-*-fromTkinterimport*root=Tk()bar defprintItem():print'popup bar,tearoff=forkin['Python','PHP','CPP','C','Java','JavaScript','VBScript']:mand(label= mand=printItem) bar.add_cascade(label='Language', =file #此時就不要將root的 bar了 ']= defpopup(event): ,右擊時調用popup,此時與菜單綁定的是root,可以設置為 試一個可以看到各個菜單項的功能都是可以使用的所以彈出菜單與一般的菜單#-*-coding:cp936-*-fromTkinterimport*root=Tk()bar defprint bar,tearoff=0)forkinrange(5):mand(label=str(k),command=printItem)bar.add_cascade(label='Language', =file 在索引添加一菜 mand mand(1,label1000',commandprintItem)#在索引2checkbutton .insert_checkbutton(2,label'2000',commandprintItem)#在索引3radiobutton .insert_radiobutton(3,label'3000',commandprintItem) file.delete(6,9)file.delete(0)'] button篇(2007-10-02 '''這是一個過時了的控件,從Tk8.0開始將不再使用這個控件,取而代之的是 button的常用方法,可以看到與 #-*-coding:cp936-*-fromTkinterimport*root=Tk()mbLang button(root,text= foritemin['Python','PHP','CPP','C','Java','JavaScript','VBScript']: mand(label=item) ']=mbLang.mbLang.pack(side=#分隔符將相關的菜單項進行分組,只是UI上的實現(xiàn),程序上沒有任何改變,它也不執(zhí)行任 #添加向菜單中添加checkbutton項mbOS= button(root,text='OS') foritemin['Unix','Linux','Soloris','Windows']: .add_checkbutton(label=item) ']=mbOS.pack(side=mbLinux= button(root,text='Linux') foritemin['Redhat','Fedra','Suse','ubuntu','Debian']: .add_radiobutton(label=item) ']=mbLinux.mbLinux.pack(side=LEFT) mand(label= .insert_checkbutton(3,label= '''1..Message'''fromTkinterimport*root=Message(root,text=' oMessage').pack() 性。Label沒有。fromTkinterimport*root=Message(root,text=' oMessage',width=60).pack() 性。Label沒有。'''3.aspect#-*-coding:cp936-*-fromTkinterimport*root=Tk()foriinMessage(root,text='A'*i,aspect=400).pack()wider/height=1.5,aspect4,即寬為高的4倍,可'''4.Message#-*-coding:cp936-*-fromTkinterimport*root=Tk()v=StringVar()foriinMessage(root,text='A',textvariable=#打印當前的vMessagevprintv.get()vMessagetextMessagetext#-*-coding:cp936-*-fromTkinterimport*root=foriinMessage(root,text='ABCDEFGHI',justify=i).pack() 之 篇(2007-10-02 之 篇 '''1.創(chuàng)建Option #-*-coding:cp936-*-fromTkinterimport*root=Tk()v=StringVar(root)om=Option #-*-coding:cp936-*-fromTkinterimport*root=Tk()v=#創(chuàng)建一個 控om= ) StringVar '''2.設置 #當 #-*-coding:cp936-*-fromTkinterimport*root=Tk()v=StringVar(root)#創(chuàng)建一個 控om= )printv.get()#運行程序 #-*-coding:cp936-*-fromTkinterimport*root=Tk()v=StringVar(root)#創(chuàng)建一個 控om= )printv.get()#程序依舊是默認值改變?yōu)門kinter,打印結果也變?yōu)門kinter,但Tkinter '''3.打印Option #-*-coding:cp936-*-fromTkinterimport*root=root=v=StringVar(root)defprintOption(event):printv.get()#創(chuàng)建一個 控om= ) 的選項#-*-coding:cp936-*-fromTkinterimport*root=Tk()Lang=['Python','PHP','CPP','C','Java','JavaScript','VBScript']v=StringVar(root)defprintOption(event):printv.get()#創(chuàng)建一個 om=apply(Option ,(root,v)+tuple(Lang)) '''1.#-*-coding:cp936-*-fromTkinterimport*root=Tk()#以不同的 forfminFrame(height=20,width=400,bg=fm).pack()Frame,大小均為20*400'''2.FrameWidget'''#-*-coding:cp936-*-fromTkinterimport*root=Tk()fm= 別各個frameforcolorin['red','blue']:fm.append(Frame(height=200,width=400,bg=color))#向下面的Frame中添加一個LabelLabel(fm[1],text=' olabel').pack()'''3.Tk8.4FrameLabelFrameTitlefromTkinterimport*root=forlfintextFrametitleLabelFrame(height200,width300,textlf).pack() '''1.PanedWindowPane'''add#-*-coding:cp936-*-fromTkinterimport*root=Tk()panes=PanedWindow(orient=VERTICAL)panes.pack(fill=BOTH,expand=1)forwin[Label,Button,Checkbutton,Radiobutton]:panes.add(w(panes,text=' '''2.PanedWindowpane'''forget/remove#-*-coding:cp936-*-fromTkinterimport*root=Tk()ws=panes=PanedWindow(orient=VERTICAL)panes.pack(fill=BOTH,expand=1)forwin[Label,Button,Checkbutton,Radiobutton]:ws.append(w(panes,text=' forwin'''3.PanedWindowpane'''paneconfig#-*-coding:cp936-*-fromTkinterimport*root=Tk()ws=ps=PanedWindow(orient=VERTICAL)ps.pack(fill=BOTH,expand=1)forwinws.append(w(ps,textws.append(w(ps,text=forwin#ps.after(ws[0],Label(ps,text= ps.paneconfig(Label(ps,text='world'),after=ws[0]) #TopLevelFrame(Title)'''1.Toplevel'''#-*-coding:cp936-*-fromTkinterimport*root=Tk()tl=#為了區(qū)別root和tl,我們向tl中添加了一個LabelLabel(tl,text=' olabel').pack()labeltl'''2.Toplevel#title#-*-coding:cp936-*-fromTkinterimport*root=Tk()tl=Toplevel()tl oToplevel')tl#為了區(qū)別root和tl,我們向tl中添加了一個LabelLabel(tl,text=' olabel').pack()'''3.Toplevel#-*-coding:cp936-*-fromTkinterimport*root=Tk()mbYes,mbYesNo,mbYesNoCancel,mbYesNoAbort= defMessageBox():mbType=mbYesNotextShow=ifmbType==mbYes:textShow=elifmbType==textShowtextShow=elifmbType==mbYesNoCancel:textShow='YesNoCancel'elifmbType==mbYesNoAbort:textShow='YesNoAbort'tl=Toplevel(height=200,width=400)Label(tl,text=textShow).pack()Button(root,text='clickme',command=MessageBox).pack() '''1.Text'''fromTkinterimport*root=Tk()t=Text(root)#rootTextCtrl+C/VTextCtrl+Z'''2.Text#insertfromTkinterimport*root=Tk()t= ABCDEFGHIJ'''3.line.colindexesText#-*-coding:cp936-*-fromTkinterimport*root=Tk()t= ABCDEFGHIJindexesTextbuffer'''markText'''4.mark#-*-coding:cp936-*-fromTkinterimport*root=t=foriinrange(1,10): #定義各個Button的回調函數(shù),這些函數(shù)使用了內置的definsertText():defcurrentText():defendText():defselFirstText():defselLastText():text='insertjcodeeratINSERT',command=insertText).pack(fill=X)text='insertjcodeeratCURRENT',command=insertText).pack(fill=text='insertjcodeeratEND',command=endText).pack(fill=X)text='insertjcodeeratSEL_FIRST',command=selFirstText).pack(fill=X)text='insertjcodeeratSEL_LAST',command=selLastText).pack(fill=X)mark:#END:Textbuffer 異 #表達式(expressionIndexes,如下:countcharscountcountcharscountcountlinescountcountlinescount#-*-coding:cp936-*-fromTkinterimport*root=Tk()t=foriinrange(1,10): a=defforwardChars():#t.mark_set(a,CURRENT+'+5chars')t.mark_set(a,CURRENT+'+5c')def#t.mark_set(a,CURRENT+'-5chars')t.mark_set(a,CURRENT+'-5c')def#t.mark_set(a,CURRENT+'+5lines)t.mark_set(a,CURRENT+'+5l')def#t.mark_set(a,CURRENT+'-5lines)t.mark_set(a,CURRENT+'-5l')deflinestartt.mark_set(a,CURRENTt.mark_set(a,CURRENT+'deft.mark_set(a,CURRENT+'lineend')defwordStart():t.mark_set(a,CURRENT+'wordstart')defwordend():t.mark_set(a,CURRENTwordend')#mark:test_mark默認值為CURRENTButton(root,text='forward5chars',command=forwardChars).pack(fill=X)Button(root,text='backward5chars',command=backwardChars).pack(fill=X)Button(root,text='forward5lines',command=forwardLines).pack(fill=X)Button(root,text='backward5lines',command=backwardLines).pack(fill=X)Button(root,text='linestart',command=lineStart).pack(fill=X)Button(root,text='lineend',command=lineEnd).pack(fill=X)Button(root,text='wordstart',command=lineEnd).pack(f
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 五年級下冊數(shù)學教案-4.1 容積|北師大版
- 2025年機動車典當合同
- 六年級上冊數(shù)學教案-總復習 你會算嗎-求陰影部分的面積|北師大版
- 2025年科研合作協(xié)議
- 第四單元驕人祖先 燦爛文化整體教學設計-2024-2025學年道德與法治五年級上冊統(tǒng)編版
- Unit 3 I'm more outgoing than my sister. SectionB 1a-1e教學設計2024-2025學年人教版英語八年級上冊
- 2025年湖北三峽職業(yè)技術學院單招職業(yè)適應性測試題庫匯編
- 2024年全腦開發(fā)項目資金申請報告代可行性研究報告
- 2025年嘉興南洋職業(yè)技術學院單招職業(yè)技能測試題庫完整
- 2025年共青科技職業(yè)學院單招職業(yè)適應性測試題庫完整版
- 高二數(shù)學(含創(chuàng)意快閃特效)-【開學第一課】2023年高中秋季開學指南之愛上數(shù)學課
- 《學前兒童社會教育》學前兒童社會教育概述-pp課件
- 全國醫(yī)學英語統(tǒng)考醫(yī)學英語詞匯表
- 【品牌建設研究國內外文獻綜述5000字】
- 國家電網(wǎng)公司電力安全工作規(guī)程(電力通信部分)(試行)
- 第八版-精神分裂癥及其他精神病性障礙(中文)
- 小學一年級新生報名登記表
- 生態(tài)毒理學第三章毒物的分子效應與毒理學機制
- 智能財務共享在京東的應用研究
- 衛(wèi)生和微生物基礎知識培訓-
- 2023年鎮(zhèn)江市高等??茖W校單招綜合素質題庫及答案解析
評論
0/150
提交評論