python_gui_Tk_Frame布局(整理)__u20180913
# -*- coding: utf-8 -*- """
20180912
学习 Frame 布局 bind 键盘事件 显示图片 使用: 1. 创建多个frame 对象,frame = Frame(...),没有指定master,默认当前Tk对象 2 将各个frame 合适的布局在主面板上 3 往各个frame添加子控件 涉及: Frame,Text,Button,PhotoImage,Label 按钮动作函数、 bind 事件 """ from Tkinter import * import time def msgsend(): '''send按钮动作 发送消息,发送框内容消失,输出框内容显示 1、在<消息列表分区>的文本控件中实时添加时间; 2、获取<发送消息分区>的文本内容,添加到列表分区的文本中; 3、将<发送消息分区>的文本内容清空。 ''' msg = '我'+time.strftime('%Y-%m-%d %H:%M:%S',time.localtime())+'\n' txt_msglist.insert(END, msg, 'green') # 表示 绿色字符插入到Text最后 txt_msglist.insert(END, txt_msgsend.get('0.0', END)) # 获取发送消息,添加文本到消息列表 txt_msgsend.delete('0.0', END) # 清空发送消息 # cancle按钮动作 取消消息发送 def cancel(): txt_msgsend.delete('0.0', END) # 清空发送消息 # 绑定up键 def msgsendEvent(event): if event.keysym == 'Up': # ↑按钮 msgsend() tk = Tk() tk.title('聊天窗口') '''创建分区''' ## 在主面板上划分区域 # 注意Frame 没有指定 master=tk,猜测没有指定就用当前的 Tk() message_show_Frame = Frame(height = 200, width=300) # 创建<消息列表分区 > message_send_Frame = Frame(height = 200, width=300) # 创建<发送消息分区 > button_Frame = Frame(height=200, width=300) # 创建<按钮分区> pic_right_Frame = Frame(height=600, width=100) # 创建<图片分区> ## Frame在主控件上的布局 message_show_Frame.grid(row=0, column=0) message_send_Frame.grid(row=1, column=0) button_Frame.grid(row=2, column=0) pic_right_Frame.grid(row=0, column=1, rowspan=3) '''创建各个Frame中的控件''' ## 输出Text txt_msglist = Text(message_show_Frame) txt_msglist.tag_config('green', foreground='blue') # 创建标签,不懂 txt_msglist.grid() ## 输入框Text txt_msgsend = Text(message_send_Frame) txt_msgsend.bind('<KeyPress-Up>', msgsendEvent) # 绑定‘UP’键与消息发送。 txt_msgsend.grid() ## 发送按钮 button_send = Button(button_Frame, text='Send', command=msgsend) button_send.grid(row=0, column=0, sticky=W) # 在Frame f_floor上的布局设置 ## 取消按钮 button_cancel = Button(button_Frame, text='Cancel', command=cancel) button_cancel.grid(row=0, column=1, sticky=W) ## 标签显示图片 photo = PhotoImage(file=r'./no_time_for_that.gif') label = Label(pic_right_Frame, image=photo) label.image = photo label.grid() tk.mainloop()

来源:
https://blog.csdn.net/kun_dl/article/details/79500962
参考:
事件关联
bind(sequence,func,add)——
bind_class(className,sequence,func,add)
bind_all(sequence,func,add)
事件参数:
sequence 所绑定的事件;
func 所绑定的事件处理函数;
add 可选参数,为空字符或‘+’;
className 所绑定的类;
鼠标键盘事件
<Button-1> 鼠标左键按下,2表示中键,3表示右键;
<ButtonPress-1> 同上;
<ButtonRelease-1> 鼠标左键释放;
<B1-Motion> 按住鼠标左键移动;
<Double-Button-1> 双击左键;
<Enter> 鼠标指针进入某一组件区域;
<Leave> 鼠标指针离开某一组件区域;
<MouseWheel> 滚动滚轮;
<KeyPress-A> 按下A键,A可用其他键替代;
<Alt-KeyPress-A> 同时按下alt和A;alt可用ctrl和shift替代;
<Double-KeyPress-A> 快速按两下A;
<Lock-KeyPress-A> 大写状态下按A;
窗口事件
Activate 当组件由不可用转为可用时触发;
Configure 当组件大小改变时触发;
Deactivate 当组件由可用转变为不可用时触发;
Destroy 当组件被销毁时触发;
Expose 当组件从被遮挡状态中暴露出来时触发;
Unmap 当组件由显示状态变为隐藏状态时触发;
Map 当组件由隐藏状态变为显示状态时触发;
FocusIn 当组件获得焦点时触发;
FocusOut 当组件失去焦点时触发;
Property 当窗体的属性被删除或改变时触发;
Visibility 当组件变为可视状态时触发;
响应事件
event对象(def function(event)):
char 按键字符,仅对键盘事件有效;
keycode 按键名,仅对键盘事件有效;
keysym 按键编码,仅对键盘事件有效;
num 鼠标按键,仅对鼠标事件有效;
type 所触发的事件类型;
widget 引起事件的组件;
width,heigh 组件改变后的大小,仅Configure有效;
x,y 鼠标当前位置,相对于窗口;
x_root,y_root 鼠标当前位置,相对于整个屏幕
写满200篇博文再说


浙公网安备 33010602011771号