var1=tk.BooleanVar() c=tk.Checkbutton(root,text='隐藏密码',variable=var1,onvalue=True,offvalue=False) 如果我把c勾选,那么各个变量的值会怎么样
时间: 2023-09-29 08:11:07 浏览: 69
如果你将`c`这个复选框勾选,即选中了该复选框,那么`var1`这个布尔变量的值将会被设置为`True`。因为我们在创建`c`时,将它的`variable`参数绑定到了`var1`这个布尔变量上。
当复选框被选中时,`var1`的值会被设置为`onvalue`参数指定的值,即`True`。而当复选框未被选中时,`var1`的值会被设置为`offvalue`参数指定的值,即`False`。
因此,如果你勾选了复选框,那么`var1`将会被设置为`True`;而如果你取消勾选复选框,那么`var1`将会被设置为`False`。你可以根据这个布尔变量的值来控制其他的代码逻辑,比如隐藏或显示密码。
相关问题
import tkinter as tk from tkinter import ttk root = tk.Tk() def on_select(event): selected_items = [value.get() for value in values] for select in selected_items: print(select) # 创建一个 ttk.Combobox 控件 Button4 = tk.Button(root, text="退出", command=on_select) Button4.pack(side="left") # 创建多个 Checkbutton 控件 values = ['序号', '姓名', '学号', '爱好'] for item in values: var = tk.StringVar() chk = ttk.Checkbutton(root, text=item, variable=var) chk.pack() values.append(var) # 绑定 "<<ComboboxSelected>>" 事件到 on_select 函数 root.geometry("300x300") root.mainloop()这个程序为什么不生成窗口
这个程序没有生成窗口的原因是因为在创建多个 Checkbutton 控件时,将变量 var 与每个 Checkbutton 绑定,但是却将这些变量添加到了 values 列表中,导致 values 列表中的元素类型不统一,从而导致程序出错。可以将 values 列表改为一个空列表,将 var 变量直接添加到一个新的列表中即可。同时,将 Button4 和 values 的添加操作放在创建 Checkbutton 控件的 for 循环之前,即可正确生成窗口。修改后的程序如下:
```python
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
def on_select(event):
selected_items = [value.get() for value in values]
for select in selected_items:
print(select)
# 创建一个 ttk.Combobox 控件
Button4 = tk.Button(root, text="退出", command=on_select)
Button4.pack(side="left")
# 创建多个 Checkbutton 控件
var_list = []
values = []
for item in ['序号', '姓名', '学号', '爱好']:
var = tk.StringVar()
chk = ttk.Checkbutton(root, text=item, variable=var)
chk.pack()
var_list.append(var)
# 将 Checkbutton 绑定的变量添加到 values 列表中
for var in var_list:
values.append(var.get())
# 绑定 "<<ComboboxSelected>>" 事件到 on_select 函数
root.geometry("300x300")
root.mainloop()
```
if var1==True: enter2 = tk.Entry(root,show='*',textvariable=password) 为什么隐藏不了密码呢
根据你提供的代码,如果`var1`的值为`True`,则创建了一个输入框(Entry)对象`enter2`,并使用`show='*'`参数来设置输入的字符以星号(*)形式显示,以达到隐藏密码的效果。
然而,你需要确保在创建`enter2`之前,已经创建了`var1`这个布尔变量,并将其与一个复选框对象绑定。复选框对象的状态变化将会影响`var1`的值。
请确认以下几点:
1. 已经正确创建了`var1 = tk.BooleanVar()`。
2. 已经将复选框控件与`var1`绑定,例如使用`c = tk.Checkbutton(root, text='隐藏密码', variable=var1, onvalue=True, offvalue=False)`。
3. 在创建`enter2`之前,复选框的状态已经被正确设置,即`var1`的值为`True`。
如果上述步骤都正确执行,但密码仍然没有隐藏,请确保你的代码没有其他地方对输入框的显示方式进行修改。另外,也要确保你的代码中没有其他地方直接对输入框的show属性进行了设置。
如果问题仍然存在,请提供更多相关的代码细节,以便更好地帮助你解决问题。
阅读全文