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

在Python2和Tkinter中,作者遇到了创建子窗口时标题与主窗口相同的问题。通过分析代码,发现Logger.i方法可能引发异常,导致title设置失效。注释掉该行后,子窗口标题能正常显示为'管理员密码'。问题在于日志记录函数干扰了UI元素的设置。
摘要由CSDN通过智能技术生成

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

问题描述:

打算实现的功能是,在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)

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

问题分析与解决:

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

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

self.title('管理员密码')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值