赞
踩
如果有些参数不理解,可以先看看第一篇Tkinter 1. 基本介绍
参数 | 说明 |
---|---|
repeatdelay | 重复延迟 |
repeatinterval | 重复间隔 |
command | 添加调用多函数,当点击按钮调用该函数 |
default | 指定按钮默认的状态:normal , active , or disabled . |
overrelief | 跟relief的设置一样,只不过这个是当鼠标移到按钮上才显示样式 |
import tkinter as tk root = tk.Tk() root.geometry('600x400+200+200') root.title('test app') mystr = tk.StringVar() tk.Label(root, textvariable=mystr, width=20, height=3, bg='#e33e31').pack() tag = False def show(): global tag if tag == False: mystr.set('you click!') tag = True else: mystr.set('') tag = False btn = tk.Button(root, bd=15, text='Click', width=10, font=('"Microsoft Yahei',20,'bold'), relief='sunken', bg='#575757', fg='white', command=show).pack() root.mainloop()
参数 | 说明 |
---|---|
indicatoron | 选择方法:如果是True就是☑️的选择方法,如果是False,就是按钮的选择方法,而且relief是:sunken |
onvalue / offvalue | 勾选选项 和取消勾选时输出的值 |
import tkinter as tk import tkinter.messagebox root = tk.Tk() root.geometry('600x400') frm = tk.LabelFrame(root, text='喜欢的编程语言', padx=10, pady=10) frm.pack() var_p = tk.IntVar() var_j = tk.IntVar() def check(): if (var_p.get() == 1) & ( var_j.get() == 1) : tkinter.messagebox.showinfo(message='我喜欢python,也喜欢Java') elif (var_p.get() == 1) & (var_j.get() == 0) : tkinter.messagebox.showinfo(message='我只喜欢python') elif (var_p.get() == 0) & (var_j.get() == 1) : tkinter.messagebox.showinfo(message='我只喜欢Java') else: tkinter.messagebox.showinfo(message='我两个都不喜欢') btn1 = tk.Checkbutton(frm,text='Python',variable=var_p,onvalue=1,offvalue=0,command=check) btn2 = tk.Checkbutton(frm,text='Java',variable=var_j,onvalue=1,offvalue=0,command=check) btn1.grid(row=0,column=0) btn2.grid(row=0,column=1) root.mainloop()
参数 | 说明 |
---|---|
indicatoron | 选择方法:如果是True就是☑️的选择方法,如果是False,就是按钮的选择方法,而且relief是:sunken |
import tkinter as tk import tkinter.messagebox root = tk.Tk() root.geometry('600x400') frm = tk.LabelFrame(root, text='性别', padx=10, pady=10) frm.pack() var_r = tk.IntVar() def radio(): if var_r.get() == 1: tkinter.messagebox.showinfo(message='你是男的') else: tkinter.messagebox.showinfo(message="你是女的") rdo = tk.Radiobutton(frm,text='男',variable=var_r,value=1,command=radio) rdo2 = tk.Radiobutton(frm,text='女',variable=var_r,value=0,command=radio) rdo.grid(row=0,column=0) rdo2.grid(row=1,column=0) root.mainloop()
参数 | 说明 |
---|---|
validate | 发生某些动作 |
validatecommand or vcmd | 发生某些动作时,触发该函数 |
show | 适用于输入密码的输入框,当show="*"时,输入密码的时候,不会显示实际内容,只显示* |
当输入框获得焦点或者失去焦点等,触发
validatecommand
上的函数,下面的英语特别简单就不翻了。
import tkinter as tk import tkinter.messagebox class App(tk.Tk): def __init__(self): super().__init__() self.geometry('600x400') self.set_widget() self.bind_event() self.mainloop() def set_widget(self): self.frm = tk.Frame(self,pady=40) self.frm.pack() tk.Label(self.frm,text='账号').grid(row=0,column=0,pady=10,padx=10) tk.Label(self.frm,text='密码').grid(row=1,column=0,pady=10) self.name = tk.StringVar() self.name.set('请输入邮箱或者手机号') self.ety_name = tk.Entry(self.frm, width=25, textvariable=self.name, font=("Microsoft Yahei",8,'italic'), fg='gray') self.ety_name.grid(row=0,column=1,columnspan=3) self.ety_pwd = tk.Entry(self.frm, show='*', width=25, font=("Microsoft Yahei",8)) self.ety_pwd.grid(row=1,column=1,columnspan=3) self.btn_write = tk.Button(self.frm,text='写入',width=5,command=self.write) self.btn_write.grid(row=2,column=3) self.btn_clear = tk.Button(self.frm,text='删除',width=5,command=self.clear) self.btn_clear.grid(row=2,column=1) self.mystr = tk.StringVar() self.ety_show = tk.Entry(self,textvariable=self.mystr,bg='red') self.ety_show.pack() def bind_event(self): """ 绑定事件""" self.ety_name.bind('<FocusIn>',self.clear_tip) self.ety_name.bind('<FocusOut>',self.add_tip) def clear_tip(self,event): self.name.set('') self.ety_name.config(font=("Microsoft Yahei",8),fg='black') def add_tip(self,event): if self.ety_name.get() == '' : self.name.set('请输入邮箱或者手机号') self.ety_name.config(font=("Microsoft Yahei",8,'italic'),fg='gray') tkinter.messagebox.showerror(title='警告',message='账号不能为空!') def write(self): data = self.ety_name.get() self.ety_show.delete(0,'end') # 先清空避免里面有数据 self.ety_show.insert('end',data) def clear(self): self.ety_show.delete(0,'end') # 从第一个字符删到最后一个字符 App()
Spinbox 是用来选择一个数值范围内的数字的输入组件
属性 | 说明 |
---|---|
from_ | 设置数值范围的最小值 |
to | 设置数值范围的最大值 |
command | 当点击了Spinbox的滑块时触发函数,手动输入值不会触发 |
format | 设置数字格式,比如'%.2f' 代表小数点后保留两位小数 |
values | 用from to 只能设置数值,用这个方法就可以选择字符串,如:values=(‘nan’,‘nv’) |
validate\validatecommand | 同上 |
import tkinter as tk import tkinter.messagebox root = tk.Tk() root.geometry('600x400') def show(): data = sbox.get() tkinter.messagebox.showinfo(message=f'you select { data}') sbox = tk.Spinbox(root,bg='red',from_=0,to=10,command=show,format='%.2f',justify='center') sbox.pack() root.mainloop()
属性 | 说明 |
---|---|
setgrid | 确定此小部件是否控制其顶级窗口的调整大小网格 |
spacing1 | 在一段没有手动换行的段落前设置行距(当写的内容超过文本框边界而换行的没问题) |
spacing2 | 在一段没有手动换行的段落之间的每一行设置行距 |
spacing3 | 在一段没有手动换行的段落后设置行距 |
tabs | tab键的距离 |
undo | 是否有撤销功能,默认True,有撤销功能 |
autoseparators | 是否在撤消堆栈中自动插入分隔符 |
索引 | 说明 |
---|---|
‘insert’ | 光标所在的位置 |
‘current’ | 与鼠标最近的位置 |
‘end’ | 文本区域最后一个字符的下一个位置 |
‘line.char’ | 某一行的某一个字符,行从1开始,字符从0开始,比如‘1.0’表示第一行的第一个字符 |
“line.end” | 表示某一行到末尾的最后一个位置 |
tag.first tag.last | 标签tag的第一个字符,和最后一个字符 |
mark | 表示紧跟在名称为mark 的标记之后的字符 |
当有选中文本时,还可以使用以下这种索引:
Text对象的get()方法可以取得目前所选的文字,在使用Text文字区域时,如果有选取文字操作发生时,Text的对象会将所选文字的起始索引放在SEL_FIRST,结束索引放在SEL_LAST,将SEL_FIRST和
SEL_LAST当做get方法的参数,就可以获得目前所选的文字了
函数 | 功能说明 |
---|---|
bbox(index) | 返回值是一个 4 元组:(x, y, width, height) |
compare(index1, op, index2) | 返回对比 index1 和 index2 指定的两个字符的结果,op—’<’, ‘<=’, ‘==’, ‘>=’, ‘>’ 或 ‘!=’ |
delete(index1, index2=None) | 删除给定范围的文本或嵌入对象 |
dlineinfo(index) | 返回给定索引指定的字符所在行的边界框,返回值是一个 5 元组:(x, y, width, height, offset),offset 表示从该行的顶端到基线的偏移 |
dump(index1, index2=None, command=None, **kw) | 返回 index1 和 index2 之间的内容 返回的值是一个由 3 元组(关键词,值,索引)组成的列表,关键词参数的顺序为:all, image, mark, tag, text, window ,如果需要筛选个别关键词,可以用 dump(index1, index2, image=True, text=True) 这样的形式调用;如果指定了 command 函数,那么会为列表中的每一个三元组作为参数调用一次该函数(这种情况下,dump() 不返回值 |
edit_modified(arg=None) | 查询和设置 modified 标志 |
edit_redo() | 恢复”上一次的“撤销”操作 |
edit_reset() | 清空存放操作记录的栈 |
edit_separator() | 插入一个“分隔符”到存放操作记录的栈中,用于表示已经完成一次完整的操作 |
edit_undo() | 撤销最近一次操作 |
get(index1, index2=None) | 返回 index1 到 index2(不包含)之间的文本 |
index(index) | 将 index 参数指定的位置以 “line.column” 的索引形式返回 |
insert(index, chars, *args) | 在 index 参数指定的位置插入字符串,参数 tags 用于指定文本的样式 |
peer_create(self, newPathName, cnf={}, **kw) | 用给定的newPathName创建一个同级的文本工具和任何可选的标准配置选项,默认统计文本工具和它的父级工具一样有着相同的起始线和终止线。但是这些可以被标准配置参数重写 |
peer_names() | 返回这个工具的同级工具的列表,不包括这个工具本身 |
replace(index1, index2, chars, *args) | 将 index1 到 index2 之间的内容替换为 chars 参数指定的字符串,如果需要为替换的内容添加 Tag,可以在 args 参数指定 Tag |
search(pattern, index, stopindex=None,forwards=None, backwards=None, exact=None,regexp=None, nocase=None, count=None, elide=None) | 太长写在下面 |
see(index) | 滚动内容,确保 index 指定的位置可见 |
search
tag_add(tagName, index1, index2…)
tag_bind(tagName, sequence, func, add=None)
import tkinter as tk import tkinter.messagebox root = tk.Tk() root.geometry('600x400') tx = tk.Text(root) tx.pack() tx.tag_config('tg1',background='red',foreground='white',underline=True) tx.insert('end','xxxxxxxxxx','tg1') def show(event): tkinter.messagebox.showinfo(message='hello') tx.tag_bind('tg1','<Enter>',show) root.mainloop()
tag_unbind(tagName, sequence, funcid=None)
tag_cget(tagName, option)
tag_config( tagName, cnf=None, **kw)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。