按按鈕,發送 LINE Notify 訊息
這篇教學會運用「發送 LINE Notify 通知」以及「點擊按鈕,顯示或清空輸入文字」文章,設計出一個可以在點擊按鈕時,將輸入的文字透過 LINE Notify 發送的功能介面。
因為 Google Colab 不支援 tkinter,所以請使用本機環境 ( 參考:使用 Python 虛擬環境 ) 或使用 Anaconda Jupyter 進行實作 ( 參考:使用 Anaconda )。
點擊按鈕,發送 LINE Notify 訊息
參考「發送 LINE Notify 通知」文章,申請 LINE Notify 金鑰 ( token ),接著修改「點擊按鈕,顯示或清空輸入文字」文章的範例,設計出一個上方為 Text 多行輸入框,下方有兩顆按鈕的介面,介面設計完成後,修改程式,使得按下按鈕時,可以將輸入的文字透過 LINE Notify 的方式發送。
import tkinter as tk
import requests
root = tk.Tk()
root.title('oxxo.studio')
root.geometry('200x200')
text = tk.Text(root, height=8) # 放入多行輸入框
text.pack()
# 發送 LINE Notify 函式
def send():
msg = text.get(1.0, 'end-1c') # 取得多行輸入框的文字內容
url = 'https://notify-api.line.me/api/notify'
token = '你的 LINE Notify Token'
headers = {
'Authorization': 'Bearer ' + token
}
data = {
'message':msg
}
data = requests.post(url, headers=headers, data=data)
# 清空多行輸入框的文字內容
def clear():
text.delete(1.0,'end')
btn1 = tk.Button(root,text='發送訊息', command=send) # 發送按鈕
btn1.pack()
btn2 = tk.Button(root,text='清空', command=clear) # 清空按鈕
btn2.pack()
root.mainloop()
點擊按鈕,透過 LINE Notify 發送圖片
延伸上方的程式,搭配「點擊按鈕開啟檔案」範例,新增一顆按鈕,點擊按鈕時可以選擇圖片,選擇圖片後,搭配「Messagebox 訊息提示框」詢問是否發送,如果確認發送,就可以透過 LINE Notify 傳送圖片。
import tkinter as tk
from pyparsing import Token
import requests
from tkinter import messagebox
from tkinter import filedialog
import os
os.chdir('/') # 移動路徑到根目錄
root = tk.Tk()
root.title('oxxo.studio')
root.geometry('200x200')
text = tk.Text(root, height=8)
text.pack()
def send():
msg = text.get(1.0, 'end-1c')
url = 'https://notify-api.line.me/api/notify'
token = '你的 LINE Notify Token'
headers = {
'Authorization': 'Bearer ' + token
}
data = {
'message':msg
}
data = requests.post(url, headers=headers, data=data)
messagebox.showinfo('showinfo', '訊息已經發送')
def clear():
text.delete(1.0,'end')
# 發送圖片函式
def sendImg():
# 取得圖片路徑,注意有個逗號
file_path, = filedialog.askopenfilenames(filetypes=[('png', '*.png'),('jpg', '*.jpg'),('gif', '*.gif')])
# 詢問是否發送
result = messagebox.askokcancel('askokcancel', f'{file_path}\n是否發送?')
# 如果 result 為 True 表示要發送
if result:
url = 'https://notify-api.line.me/api/notify'
token = '你的 LINE Notify Token'
headers = {
'Authorization': 'Bearer ' + token
}
data = {
'message':'圖片來囉~'
}
image = open(file_path, 'rb') # 以二進位方式開啟圖片
imageFile = {'imageFile' : image} # 記錄為字典格式
data = requests.post(url, headers=headers, data=data, files=imageFile) # 發送圖片
messagebox.showinfo('showinfo', '圖片已經發送')
else:
messagebox.showinfo('showinfo', '取消發送圖片')
btn1 = tk.Button(root,text='發送訊息', command=send)
btn1.pack()
btn2 = tk.Button(root,text='清空', command=clear)
btn2.pack()
btn3 = tk.Button(root,text='傳送圖片', command=sendImg)
btn3.pack()
root.mainloop()
意見回饋
如果有任何建議或問題,可傳送「意見表單」給我,謝謝~