2017-02-06 76 views
-1

我正在嘗試編寫一些代碼,用目錄中的文件名(.png圖像)填充spinbox。然後在Spinnerbox中選擇一個項目顯示圖像。我有從紡紗器傳遞值用GETTkinter Spinbox在命令函數中使用獲取值

產生的誤差問題是:

photo = PhotoImage(file=XS_Spinbox.get()) 
AttributeError: 'NoneType' object has no attribute 'get' 

注意到硬編碼的文件名工程...

photo = PhotoImage(file='Arm_DEM_192_XSplot.png') 

XS_Spinbox = Spinbox(myframe2, values = ([x for x in os.listdir(os.curdir) if os.path.splitext(x)[1] in ('.png')]), command=update_photoImage).pack() 

def update_photoImage(): 
#print XS_spinBox.get() 
#photo = PhotoImage(file=XS_spinBox.get()) 
photo = PhotoImage(file=XS_Spinbox.get()) 
label.image = photo 
return 
+0

我認爲這個問題是更多的Tkinter部件紡紗器如何傳遞值命令的功能呢? –

+0

DEF update_photoImage(): 打印XS_Spinbox.get() 相片=光象(文件= XS_Spinbox.get()) 相片= photo.subsample(2,2) #label =標籤(myframe2,圖像照片=) label.configure(image = photo) label.image = photo print'Image updated ...' return使用spinbox.get數據成功更新圖像 –

回答

0

pack()回報None,你把它分配給XS_Spinbox

你有兩個步驟做:

XS_Spinbox = Spinbox(...) 

XS_Spinbox.pack() 
+0

我已經調整爲兩步分配,但儘管Spinbox (): print XS_Spinbox.get() photo = PhotoImage(file = XS_Spinbox.get()) photo = photo.subsample(2,2)01數據正在更新圖像未在函數def中更新update_photoImagelabel = Label(myframe2,image = photo) label.image = photo return想知道標籤中的圖像如何更新? –

+0

你是否在控制檯中運行?也許你會得到錯誤信息。您可能需要將'os.curdir'添加到文件名以獲得完整路徑。 – furas

+0

你必須做'label [「image」] = photo'或'label.config(image = photo)' – furas