from tkinter.filedialog import askopenfilename
import tkinter
import os
tkinter.Tk().geometry("800x600+200+20") #外框布局(長x寬+x坐標+y坐標)
b=tkinter.Button(text=" 按鈕 ")
b.place(x=20,y=20)
default_dir = r"C:\Users\lenovo\Desktop" # 設定默認打開目錄
def www(event):
fn=askopenfilename(title="選擇檔案",initialdir=(os.path.expanduser(default_dir)))
print(fn)
return fn
b.bind("<Button-1>", www)
print(www())#這里一直報錯,用return不行
tkinter.mainloop()
本人剛開始自學Python,有兩個簡單問題問下各位大神,def www(event)里面的引數event是什么意思?
還有我想獲取def里面的引數fn結果,怎樣把里面的fn結果傳遞出來啊?
我想用return回傳不行,別的方法就不懂了,請高手指教。
uj5u.com熱心網友回復:
widget 事件被觸發的控制元件x, y 滑鼠距離表單左上角的位置(坐標)
x_root, x_y 滑鼠距離螢屏左上角的位置(坐標)
char 鍵盤事件對應的字符代碼
keysym 鍵盤事件對應的字串
keycode 鍵盤事件對應的按鍵碼
num 滑鼠事件對應的按鍵碼
width, height 控制元件的新大小
type 事件型別
使用event.type可以獲得對應的事件型別,其它的同理可得。
其次,函式www()需要引數,因此你在使用print時隨便給www()一個引數就應該可以了。
uj5u.com熱心網友回復:
大神,可以麻煩您直接告訴我怎么改嗎?不然我屬于菜鳥級別的,只看理論不懂修改啊!麻煩您幫我改下要怎樣才不出錯啊?
uj5u.com熱心網友回復:
from tkinter.filedialog import askopenfilename
import tkinter
import os
tkinter.Tk().geometry("800x600+200+20") # 外框布局(長x寬+x坐標+y坐標)
b = tkinter.Button(text=" 按鈕 ")
b.place(x=20, y=20)
default_dir = r"C:\Users\lenovo\Desktop" # 設定默認打開目錄
you_choice_file = ''
def www(event):
fn = askopenfilename(title="選擇檔案", initialdir=(os.path.expanduser(default_dir)))
print(fn ,' 想干啥就在這里干 不需要return')
b.bind("<Enter>", www)
# 用buuton -1 , 按鈕不會復原, 用 Enter 比較好
# print(www()) # 這里一直報錯,用return不行
# 視窗啟動好后, 要做啥,就通過事件去呼叫對應的函式。
tkinter.mainloop()
uj5u.com熱心網友回復:
非常感謝您的解答,我還是想知道怎么把def 函式里的那個fn引數值傳遞出來?因為我確實基礎很差!uj5u.com熱心網友回復:
你要先了解 順序程式結構 及 事件驅動程式結構的區別。在 tk 的程式中, tkinter.mainloop() 執行以后, 所有的事情都交給 主執行緒了, 任何操作都和事件有關。
對你提的 怎么把def 函式里的那個fn引數值傳遞出來 這個問題, 你要先確定這個值要傳遞去哪里,就是你想做什么。
你要是想把這個值傳遞到另外一個表單, 那就通過訊息機制, 如果要把這個值列印,我的代碼里已有了。如果是要保存到資料庫,或者寫到檔案,那就在 print 陳述句哪里,加上對應的代碼即可。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/73624.html
上一篇:Microsoft 365 開發篇:將SharePoint Online的Site Collection保存為模板
