Python tkinter實現先彈出選擇框後彈出輸入框,並得到輸入框的值

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('不做處理')
就像這樣做了修改,這樣就解決獲取不到輸入框的值得問題!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章