Tkinter教程(10)

2019-08-31 15:05

#创建四个pane

for w in [Label,Button,Checkbutton,Radiobutton]: ws.append(w(panes,text = 'hello')) for w in ws: panes.add(w)

#从panes中删除包含子Button的pane,使用remove与forget相同 panes.forget(ws[1]) #panes.remove(ws[1]) root.mainloop()

#只有三个widget,Button已被删除。

'''3.在PanedWindow指定位置添加一个pane''' #使用paneconfig方法 # -*- coding: cp936 -*- from Tkinter import * root = Tk() ws = []

ps = PanedWindow(orient = VERTICAL) ps.pack(fill = BOTH,expand = 1) #创建四个pane

for w in [Label,Button,Checkbutton,Radiobutton]: ws.append(w(ps,text = 'hello')) for w in ws: ps.add(w)

#在0之后添加一个Lable,出错!!!

#ps.after(ws[0],Label(ps,text = 'world'))

#注意被添加的widget是第一个参数,after指定是位于那一个widget之后 #不要与after方法混淆了

ps.paneconfig(Label(ps,text = 'world'),after = ws[0]) root.mainloop()

#这个widget主要也是用来做Container的,使用了大量的gm方法。

Toplevel

'''Tkinter教程之Toplevel篇'''

#TopLevel与Frame类似,但它包含窗体属性(如Title) '''1.创建简单的Toplevel''' # -*- coding: cp936 -*- from Tkinter import * root = Tk() tl = Toplevel()

#为了区别root和tl,我们向tl中添加了一个Label Label(tl,text = 'hello label').pack() root.mainloop()

#运行结果生成了两个窗体,一个是root启动的,另一个则是Toplevel创建的,它包含有一个label;关闭tl

#则没有退出程序,Tk仍旧工作;若关闭Tk,整个Tk结束tl也结束,它不能单独存在。

'''2.设置Toplevel的属性''' #title设置标题

#geometry设置宽和高 # -*- coding: cp936 -*- from Tkinter import * root = Tk() tl = Toplevel() #设置tl的title

tl.title('hello Toplevel') #设置tl在宽和高

tl.geometry('400x300')

#为了区别root和tl,我们向tl中添加了一个Label Label(tl,text = 'hello label').pack() root.mainloop()

'''3.使用Toplevel自己制作提示框''' # -*- coding: cp936 -*- from Tkinter import * root = Tk()

mbYes,mbYesNo,mbYesNoCancel,mbYesNoAbort = 0,1,2,4

#定义一个消息对话框,依据传入的参数不同,弹出不同的提示信息 def MessageBox(): #没有使用使用参数 mbType = mbYesNo textShow = 'Yes' if mbType == mbYes: textShow = 'Yes' elif mbType == mbYesNo: textShow = 'YesNo'

elif mbType == mbYesNoCancel: textShow = 'YesNoCancel' elif mbType == mbYesNoAbort: textShow = 'YesNoAbort'

tl = Toplevel(height = 200,width = 400) Label(tl,text = textShow).pack()

#由Button来启动这个消息框,因为它使用了空的回调函数,故MessageBox改为了无参数形式,使用了固定 #值mbYesNo

Button(root,text = 'click me',command = MessageBox).pack() root.mainloop()

Text (1)

'''Tkinter教程之Text篇(1)''' '''1.创建第一个Text''' from Tkinter import * root = Tk() t = Text(root) t.pack()

root.mainloop()

#root中含有一Text控件,可以在这个控件内输入文本,可以使用Ctrl+C/V向Text内添加剪切板上的内容(文本),不接受Ctrl+Z执行操作 '''2.向Text中添加文本''' #insert方法添加文本内容 from Tkinter import *

root = Tk() t = Text(root)

#向第一行,第一列添加文本0123456789 t.insert(1.0,'0123456789')

#向第一行第一列添加文本ABCDEFGHIJ t.insert(1.0,'ABCDEFGHIJ') t.pack()

root.mainloop()

#insert的第一个参数为索引;第二个为添加的内容 '''3.使用line.col索引添加内容''' #使用indexes来添加Text的内容 # -*- coding: cp936 -*- from Tkinter import * root = Tk() t = Text(root)

# 向第一行,第一列添加文本0123456789 t.insert(1.0,'0123456789') t.insert('2.end','\\n')

# 向第一行第一列添加文本ABCDEFGHIJ t.insert(2.5,'ABCDEFGHIJ') t.pack()

root.mainloop()

# 可以看到使用indexes时,如果其值超过了Text的buffer值,程序不会抛出异常,它会使用向给定值靠近。

'''mark是用来表示在Text中位置的一类符号''' '''4.使用内置的mark控制添加位置'''

#演示了内置的mark:INSERT/CURRENT/END/SEL_FIRST/SEL_LAST的用法 # -*- coding: cp936 -*- from Tkinter import *

root = Tk() t = Text(root)

#向Text中添加10行文本 for i in range(1,10):

t.insert(1.0,'0123456789\\n')

#定义各个Button的回调函数,这些函数使用了内置的 mark:INSERT/CURRENT/END/SEL_FIRST/SEL_LAST def insertText():

t.insert(INSERT,'jcodeer') def currentText():

t.insert(CURRENT,'jcodeer') def endText():

t.insert(END,'jcodeer') def selFirstText():

t.insert(SEL_FIRST,'jcodeer') def selLastText():

t.insert(SEL_LAST,'jcodeer') #INSERT Button(root,

text = 'insert jcodeer at INSERT', command = insertText ).pack(fill = X) #CURRENT Button(root,

text = 'insert jcodeer at CURRENT', command = insertText ).pack(fill = X) #END

Button(root,

text = 'insert jcodeer at END', command = endText ).pack(fill = X) #SEL_FIRST Button(root,

text = 'insert jcodeer at SEL_FIRST', command = selFirstText ).pack(fill = X) #SEL_LAST Button(root,

text = 'insert jcodeer at SEL_LAST', command = selLastText ).pack(fill = X)

t.pack()

root.mainloop() #几个内置的mark: #INSERT:光标的插入点

#CURRENT:鼠标的当前位置所对应的字符位置 #END:这个Text buffer的最后一个字符

#SEL_FIRST:选中文本域的第一个字符,如果没有选中区域则会引发异常 #SEL_LAST:选中文本域的最后一个字符,如果没有选中区域则会引发 异常

'''5.使用表达式来增强mark'''

#表达式(expression)可以个性任何的Indexes,如下: '''

+ count chars :前移count字符 - count chars :后移count字符 + count lines :前移count行 - count lines :后移count行 linestart:移动到行的开始 linesend:移动到行的结束 wordstart:移动到字的开始 wordend:移动到字的结束 '''

# 演示修饰符表达式的使用方法,如何与当前可用的indexes一起使用 # -*- coding: cp936 -*- from Tkinter import * root = Tk() t = Text()

# 向第一行,第一列添加文本0123456789 for i in range(1,10):

t.insert(1.0,'0123456789\\n') a = 'test_mark' def forwardChars(): # 直接连接字符串

# t.mark_set(a,CURRENT + '+ 5 chars') t.mark_set(a,CURRENT + '+5c') def backwardChars():

# t.mark_set(a,CURRENT + '- 5 chars') t.mark_set(a,CURRENT + '-5c') def forwardLines():

# t.mark_set(a,CURRENT + '+ 5 lines) t.mark_set(a,CURRENT + '+5l') def backwardLines():

# t.mark_set(a,CURRENT + '- 5 lines) t.mark_set(a,CURRENT + '-5l') def lineStart():

# 注意linestart前面的那个空格不可省略


Tkinter教程(10).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:人教版小学语文二年级下册8.彩色的梦第二课时公开课教学设计

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: