Python 自帶的GUI tkinter實現界面編寫有點難,這次我遇到的問題如下所示:
當我一開始進入系統時彈出如下選擇框,我點擊確定即可彈出輸入框,可當我輸入好相應信息之後點擊確定,卻拿不到我在輸入框輸入的值。
這個情況的具體代碼如下:
import tkinter as tk from tkinter import messagebox def on_click(): global UserName UserName = xls_text.get().lstrip() if len(UserName) == 0: print("用戶名必須輸入!") exit() root.quit() root.destroy() print("用戶名:%s" %(UserName)) var_box = tk.messagebox.askyesno(title='系統提示',message='是否需要')#返回'True','False' if var_box: root = tk.Tk() root.title("拍照") xls_text = tk.StringVar() l1 = tk.Label(root, text="請輸入用戶名:") l1.pack() # 這裏的side可以賦值爲LEFT RTGHT TOP BOTTOM xls = tk.Entry(root, textvariable=xls_text) xls_text.set(" ") xls.pack() tk.Button(root, text="點擊確認", command=on_click).pack() root.mainloop() else: print("不做處理")
後來參考了羅兵的博客:http://www.jb51.net/article/119817.htm
將我的代碼修改爲如下:
import tkinter as tk from tkinter import messagebox UserName = "" class MyCollectApp(tk.Toplevel):#重點 def __init__(self): super().__init__() #重點 self.title('用戶信息') self.setupUI() def setupUI(self): row1 = tk.Frame(self) row1.pack(fill="x") l1 = tk.Label(row1, text="用戶名:",height=2,width=10) l1.pack(side=tk.LEFT) # 這裏的side可以賦值爲LEFT RTGHT TOP BOTTOM self.xls_text = tk.StringVar() tk.Entry(row1, textvariable=self.xls_text).pack(side=tk.RIGHT) row2 = tk.Frame(self) row2.pack(fill="x") tk.Button(row2, text="點擊確認", command=self.on_click).pack(side=tk.RIGHT) def on_click(self): #print(self.xls_text.get().lstrip()) global UserName UserName = self.xls_text.get().lstrip() if len(UserName) == 0: #print("用戶名必須輸入!") messagebox.showwarning(title='系統提示',message='請輸入用戶名!') return False self.quit() self.destroy() print("用戶名:%s" % (UserName)) if __name__ == '__main__': var_box = tk.messagebox.askyesno(title='系統提示', message='是否採集人臉數據需要') # 返回'True','False' if var_box: app = MyCollectApp() app.mainloop() else: print('不做處理')就像這樣做了修改,這樣就解決獲取不到輸入框的值得問題!