python2 TopLevel主窗体弹子窗体,标题名不对

导读:本篇文章讲解 python2 TopLevel主窗体弹子窗体,标题名不对,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

先上最终效果图:主界面与子窗体的标题达到要求。

python2 TopLevel主窗体弹子窗体,标题名不对

问题描述:

打算实现的功能是,在python2 , Tkinter 实现主界面再弹个子窗体输入密码确认打开编辑功能。

但是在打开子窗体的时候遇到子窗体的标题名称跟主界面一样。

以下是弹窗源代码。

class MyDialog(tk.Toplevel):

    def __init__(self):
        tk.Toplevel.__init__(self)
        self.pwd = "gdadmin",
        self.isOk = False
        Logger.i("admin pwd = {}".format(self.pwd))
        self.title('管理员密码')
        # 弹窗界面
        self.setup_UI()

    def setup_UI(self):
        # 第一行(两列)
        row1 = tk.Frame(self)
        row1.pack(fill="x")
        tk.Label(row1, text='请输入管理员密码:', width=10).pack(side=tk.LEFT)
        self.et_pwd = tk.StringVar()
        tk.Entry(row1, textvariable=self.et_pwd, width=20).pack(side=tk.LEFT)

        # 第二行
        row3 = tk.Frame(self)
        row3.pack(fill="x")
        tk.Button(row3, text="取消", command=self.cancel).pack(side=tk.RIGHT)
        tk.Button(row3, text="确定", command=self.ok).pack(side=tk.RIGHT)

    def ok(self):
        self.in_pwdd = self.et_pwd.get().strip()  # 设置数据
        if self.pwd == self.et_pwd.get().strip():
            self.isOk = True
            self.destroy()
        else:
            Logger.e("the password is error.")

    def cancel(self):
        self.isOk = False
        Logger.e("enter password is cancel.")
        self.destroy()

然后是调用代码 

def onClick_edit(self):
    pwd_diaglog = MyDialog()
    self.master.wait_window(pwd_diaglog)  # 这一句很重要!!!
    self.update_setting_state(pwd_diaglog.isOk)

然后运行后弹窗子窗标题跟主界面标题一样

python2 TopLevel主窗体弹子窗体,标题名不对

问题分析与解决:

对比了一下之前正常代码分析发现是设置子窗标题前面这个Logger.i()方法有异常导致下面tilte()设置失败。注释之后就能正常设置不同标题名。

#Logger.i(“admin pwd = {}”.format(self.pwd)) 

self.title(‘管理员密码’)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/101656.html

(1)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!