先上最终效果图:主界面与子窗体的标题达到要求。
问题描述:
打算实现的功能是,在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(‘管理员密码’)
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/101656.html