import tkinter as tk from tkinter import StringVar, messagebox from tkinter import ttk class CodeDialog(object): def __init__(self, title=None, label="Code Dialog"): self.root = tk.Tk() self.root.title(title) self.code = StringVar() mainframe = ttk.Frame(self.root, padding="12 12 12 12") mainframe.grid(column=0, row=0, ) self.label = ttk.Label(mainframe, text=label, width=10) self.input = ttk.Entry(mainframe, textvariable=self.code, width=20) self.button = ttk.Button(mainframe, text="ok", command=self.click_ok, width=5,) self.label.grid(row=1, column=0) self.input.grid(row=1, column=1) self.button.grid(row=2, column=1, sticky=tk.E) self.root.bind('', self.click_ok) def wait_string(self): # 局中 self.root.eval('tk::PlaceWindow . center') self.root.mainloop() return self.code.get() def click_ok(self, *args, **kwargs): if not self.code.get(): messagebox.showwarning(title="warning", message="code is empty") return self.root.destroy() if __name__ == '__main__': code = CodeDialog(title="Code Dialog", label="Code: ").wait_string() print(code)