Python 板


LINE

各位版上的高手早上好。 我這邊在撰寫GUI的時候遇到了一個創建元件必須用Global的問題,我的程式結構如下。 這只是我的程式片段,無法執行的。 def main_GUI(): window=tk.Tk() window.title('東山模具社--模具管理系統(V%s)'%VC) window.geometry('800x600') #定義視窗大小 #------規格搜尋GUI--------- def Sub_OM_generator(*args): #依據部位不同產生下拉式選單 forget_all_widget()#避免上一次變動沒有清除到,殘留在視窗上。 if Selected_part.get() == "下切": Selected_Tuple=Cut_OM_Tuple elif Selected_part.get() =="靠模盤": Selected_Tuple=Plate_OM_Tuple for index_r in range(2,(len(Selected_Tuple)+2)): #為了要讓元件名稱和位置相呼應方便管理Offset +2個Row globals()['Label'+str(index_r)+str(0)]=tk.Label(Specinfo,text= Selected_Tuple[index_r-2]) #Select_Tuple 的指標必須要減2因應前一行的Offset措施。 globals()['Label'+str(index_r)+str(0)].grid(row=(index_r),column= 0,sticky=tk.W) for index_c in range(1,4): globals()['Entry'+str(index_r)+str(index_c)]=tk.Entry(Specinfo ,width=10) globals()['Entry'+str(index_r)+str(index_c)].grid(row=(index_r) ,column=(index_c),sticky=tk.W) global _Specinfo_WN _Specinfo_WN=index_r #Specinfo fram 最後一個自動產生的元件流水號。 Central_Label.grid(row=1,column=1) Upper_Label.grid(row=1,column=2) Lower_Label.grid(row=1,column=3) Confirm_btn.grid(row=_Specinfo_WN+1,column=2) #把確認按鈕跟清除資料的按鈕放在最下面。 Clean_btn.grid(row=_Specinfo_WN+1,column=3) def Specinfo_search_btn():#按下搜尋按鈕要執行的事情 table_name=Selected_part.get() #取得Table name input_list=[] for index_r in range(2,(_Specinfo_WN+1)): #從第二行開始抓資料,因應Offset的做法。 input_list.append(globals()['Label'+str(index_r)+str(0)].cget ("text")) #cget取得Label的內容 for index_c in range(1,4): input_list.append(globals()['Entry'+str(index_r)+str(index_c)] .get()) #將Entry的值放進List裡面 sqlite_command=sqlite_search_command_generator(table_name,input_list) #產生查詢命令 column_name,dimension=Retrive_column_name_from_sqlite(DB_name,table_ name) #取得欄位資料 data=Retrieve_data_from_sqlite(DB_name,sqlite_command) #從Sqlite取得資料 data_on_treeview(column_name, data, dimension)#把資料放進treeview Specinfo_label1=tk.Label(Specinfo,text="模具部位",font="標楷體 12") #把一定要建立的物件放主Function底下,可以避免用Global函數。 Central_Label=tk.Label(Specinfo,text="中心值",anchor='center') Upper_Label=tk.Label(Specinfo,text="正公差",anchor='center') Lower_Label=tk.Label(Specinfo,text="負公差",anchor='center') Selected_part=tk.StringVar(Specinfo) Part_OptionMenu=tk.OptionMenu(Specinfo, Selected_part, *Part_OM_Tuple) #顯示選項,未來可以用變數處理。 Confirm_btn=tk.Button(Specinfo,text="查詢",font="標楷體 12",command=Specinfo_search_btn) Clean_btn=tk.Button(Specinfo,text="清除所有條件",font="標楷體 12",command=forget_all_widget) Specinfo_help_btn=tk.Button(Specinfo,text="說明文件",font="標楷體 12",command=lambda:display_PDF(Specinfo_help)) Specinfo_label1.grid(row=0,column=0) Part_OptionMenu.grid(row=0,column=1) Selected_part.trace("w",Sub_OM_generator) #當下拉式選單狀態改變時就呼叫下拉式選單產生器 執行的畫面如下 https://imgur.com/hXUnpfB https://imgur.com/kFUZhKU https://imgur.com/DBGmenN 在執行def Sub_OM_generator(*args)這個Function 的時候我必須要用Global()才能創建Label跟EntryBox 請問高手這個有辦法解決嗎? 還是只能這樣搞? --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.33.116.8 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Python/M.1594180901.A.19D.html ※ 編輯: yimean (114.33.116.8 臺灣), 07/08/2020 12:02:58
1F:→ killua12703: 用class做tkinter 07/08 12:49
2F:推 stlevi811101: https://youtu.be/RkaekNkIKNY 07/09 07:40
3F:→ stlevi811101: 影片後半部就是你的問題 所以改用class更系統化 07/09 07:44
4F:→ stlevi811101: https://i.imgur.com/mPM1mmm.png 官方文檔範例 07/09 07:44
5F:→ stlevi811101: Stack Overflow有位Bryan Oakley回答很多相關問題 07/09 07:47
6F:→ stlevi811101: 「Best way to structure a tkinter application?」 07/09 07:48
7F:→ yimean: 感恩K大與S大的指導。 07/09 08:27







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:WOW站內搜尋

TOP