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是menu0

root.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):#要加event
    print("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)#在输入框按下回车,调用函数p

btn0['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()  


  • 13
    点赞
  • 74
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值