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       鼠標當前位置,相對於整個屏幕
復制代碼

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM