python thinker(菜单,滚动条,回调函数,对话框)
python thinker(菜单,滚动条,回调函数,对话框)
菜单menu
from tkinter import *
root= Tk()
def lab():label0=Label(root,text="hello world")label0.grid(column=0)
root.geometry("800x480")#窗口大小menu0=Menu(root)#参数是父级控件
for x in ['文件','编辑','视图']:menu0.add_command(label=x,command=lab)#添加3个一级菜单
#二级菜单
cascade0=Menu(menu0,tearoff=False)#tearoff=False 表示这个菜单不可以被拖出来
for x in ['添加新项','添加现有项']:cascade0.add_command(label=x,command=lab)
cascade0.add_separator()#分割线
cascade0.add_checkbutton(label="在不调试的情况下启动")#单选框
cascade0.add_separator()#分割线
cascade0.add_radiobutton(label="添加引用")#多选框
cascade0.add_radiobutton(label="添加服务")#多选框
menu0.add_cascade(label='项目',menu=cascade0)#在menu0中添加一个label为项目的级联菜单root['menu']=menu0#窗口root的menu是menu0root.mainloop()
滚动条Scrollbar
单独
from tkinter import *
root= Tk()
def scrollCall(moveto, pos): # 如何得到两个参数:使用如下打印中的信息,可以看到解释器传给scrollCall函数的两个参数,一个为 # moveto,参考手册可以得知,它是当拖动slider时调用的函数;另一个参数为slider的当前位置,我们 # 可以通过set函数来设置slider的位置,因此使用这个pos就可以完成控制slider的位置。 scrollbar.set(pos, 0) print(pos)
#root.geometry("1280x720")#大小
scrollbar = Scrollbar(root,orient=HORIZONTAL,command=scrollCall)
scrollbar.pack(side = BOTTOM,fill =X)#必须填充 root.mainloop()
与listbox 列表框配合
from tkinter import *
root = Tk()
lb = Listbox(root)
scrollbarx = Scrollbar(root,orient=HORIZONTAL)
scrollbary = Scrollbar(root)
scrollbarx.pack(side = BOTTOM,fill = X)
scrollbary.pack(side = RIGHT,fill = Y)
#root.geometry("1280x720")
#side指定Scrollbar为居右;fill指定填充满整个剩余区域,到WM在时候再详细介绍这几个属性。
#下面的这句是关键:指定Listbox的yscrollbar的回调函数为Scrollbar的set
lb['xscrollcommand'] = scrollbarx.set
lb['yscrollcommand'] = scrollbary.set
for i in range(100): lb.insert(END,str(i)*20) #side指定Listbox为居左,
lb.pack(side = LEFT,fill=BOTH)
#下面的这句是关键:指定Scrollbar的command的回调函数是Listbar的yview
scrollbary['command'] = lb.yview
scrollbarx['command'] = lb.xview
root.mainloop()
使用grid布局
from tkinter import *
root= Tk()
def scrollCall(moveto, pos): # 如何得到两个参数:使用如下打印中的信息,可以看到解释器传给scrollCall函数的两个参数,一个为 # moveto,参考手册可以得知,它是当拖动slider时调用的函数;另一个参数为slider的当前位置,我们 # 可以通过set函数来设置slider的位置,因此使用这个pos就可以完成控制slider的位置。 scrollbar.set(pos, 0) list.insert(END,pos)
#root.geometry("1280x720")#大小
scrollbar = Scrollbar(root,command=scrollCall)
scrollbar.grid(column=0,row=0,sticky=NS)
#sticky 意思是组件紧靠所在单元格的某一边角。
# 取值有:N,S,E,W,NS,EW,NE,SW
#(默认为CENTER)
list=Listbox(root)
list.grid(row=0,column=1)
root.mainloop()
控件调用函数
from tkinter import *#相当于命名空间
root= Tk()
def lab():label0=Label(root,text="label1")label0.grid(column=0)def p(event):#要加eventprint("hello world")root.title("hello world")#窗口标题
#第一种
btn0=Button(root,text="button",command=lab)#按下调用函数lab
btn0.grid(row=0,column=0,sticky=EW)
#第二种
btn1=Button(root,text="button")
btn1.grid(row=0,column=1)
btn1.bind("<Button-1>",p)#鼠标左键,按下调用函数p
"""
1.我们在使用 bind 函数的时候事件
2.<Button-1>表示鼠标左键单击,3 右,2中
3.<KeyPress-A>表示 A 键被按下
4.<Control-V>表示按下的是 Ctrl 和 V 键
5.<F1>表示按下的是 F1 键"""ent=Entry(root)#输入框
ent.grid(row=1,column=0)
ent['show']="*"#掩码
ent.bind("<KeyPress-\n>",p)#在输入框按下回车,调用函数pbtn0['background']="blue"
print(btn0["text"])root.mainloop()
消息框与文件选择对话框
from tkinter import *#相当于命名空间
from tkinter.messagebox import *#相当于命名空间
from tkinter.filedialog import *
root= Tk()
file = askopenfilename()#打开选择文件窗口
showinfo(title="hello world",message=file)
#还有其它showwarning,showerror,askquestion,askokcancel,askyesno,askretryignore.
root.mainloop()
最新文章
- 接口继承接口
- Unity编写冰球对战游戏 2D版
- jmeter用法
- ClassNotFoundException: org.apache.flink.shaded.guava18.com.google.common.collect.Lists
- 雷达信号处理&重学傅里叶变换(一):Radar cube &multidimensional Fourier transform
- SQL语句执行顺序及建议
- SQL语句执行顺序详解
- SQL语句执行顺序及书写建议
- 强制横屏或者竖屏
- PTA 乙级难点(全部)
- lxml简明教程
- utils.AverageMeter()用法
- 关于comparator升序、降序
- 快速排序(升序+降序)
- hadoop安装步骤
- Java并发编程(一)—— FutureTask超详细教程
- 学好c语言对php的帮助,学好c语言可以干什么?