Tkinter 顶级窗口 阻塞式窗口

class Top(tk.Toplevel):
    """用户输入窗口
    """
    def __init__(self, master, data):
        self.master = master
        super().__init__(master)
        self.geometry("600x300+300+30")
        self.attributes("-alpha", 0.9)
        self.grab_set()
        self.attributes('-topmost', 1)
        self.sure = False
        self.data = data
        ttk.Label(self, text=self.data['title']).grid(row=0, column=0)
        ttk.Button(self, text="确认", command=self.ok).grid(row=6, column=6)
        if isinstance(self.data['items'], str):
            # 根据items 类型生成不同的组件 输入框或者 单选按钮
            if self.data['items'] == "int":
                self.value = tk.IntVar()
            else:
                self.value = tk.StringVar()
            self.entry = ttk.Entry(self, textvariable=self.value)
            self.entry.grid(row=2, column=0)
        else:
            self.value = tk.StringVar()
            for index, v in enumerate(self.data['items'], start=1):
                self.create_radio(v, index)
        master.wait_window(self)

    def ok(self):
        self.sure = True
        self.destroy()

    def create_radio(self, v, index):
        ttk.Radiobutton(self, text=v, variable=self.value, value=v).grid(row=index, column=0)

    def get_value(self):
        if self.sure:
            return self.value.get()
        # self.master.deiconify()
        return None
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值