Checkbutton常用属性如下:
名称 | 说明 |
text | 控件显示文本 |
variable | 和复选框按钮关联的变量,该变量值会随着用户选择行为来改变(选或不选),即在 onvalue 和 offvalue 设置值之间切换,这些操作由系统自动完成 |
onvalue | 通过设置 onvalue 的值来自定义选中状态的值。传输给variable。 |
offvalue | 通过设置 offvalue 的值来自定义未选中状态的值。传输给variable。 |
indicatoron | 默认为 True,表示是否绘制用来选择的选项的小方块,当设置为 False 时,会改变原有按钮的样式,与单选按钮相同 |
selectcolor | 选择框的颜色(即小方块的颜色),默认由系统指定 |
selectimage | 设置当 Checkbutton 为选中状态的时候显示的图片,若如果没有指定 image 选项,该选项被忽略 |
textvariable | Checkbutton 显示 Tkinter 变量(通常是一个 StringVar 变量)的内容,如果变量被修改,Checkbutton 的文本会自动更新 |
wraplength | 表示复选框文本应被分成多少行,该选项指定每行的长度,单位是屏幕单元,默认值为 0 |
我们可以通过variable属性来控制button的勾选状态,不多说了上代码:
from tkinter import Tk, Entry,Checkbutton,BooleanVar
var_isline = BooleanVar()
if data['islinefeed'] == 'True':
check_isline = Checkbutton(window, text="换行输出",onvalue=True,offvalue=False,variable=var_isline)
var_isline.set(True)
else:
check_isline = Checkbutton(window, text="换行输出", state="normal",variable=var_isline)
check_isline.place(x=410,y=0)
代码分析:
1.我们利用tk自带的函数定义一个var_isline对象(ps:BoolenVar获取的就是Bool型,IntVar就是Int型,根据需求Import即可)
2.check_isline = Checkbutton(window, text="换行输出",onvalue = True,offvalue =False,variable=var_isline):定义checkbutton对象
window:窗口对象
text:文本内容
onvalue=True:勾选时,variable 赋予True值
offvalue = False :未勾选时,variable 赋予False值
variable = var_isline:使用变量var_isline来监听和控制勾选状态
3.var_isline.set(True):将var_isline置为True也就是对应onvalue状态,即为勾选状态
运行框架:可以看出,换行输出就自动勾选了
补充一点:使用var_line.get()来获取该值的内容
var_line.get()
整体代码如下:这是我自己写了一窗口仅供参考:该窗口实现了在鼠标位置弹出一个无边框的设置界面
import pyautogui
from tkinter import Tk, Entry,Checkbutton,BooleanVar
from utils.config_process import *
def open_quick_set_message():
def save_message(event): # 修改这里,去掉括号
message = entry.get()
path = "config.txt"
data = getconfig(path)
data['message'] = message
data['islinefeed']= str(var_isline.get())
data['isalways'] = str(var_isalways.get())
saveconfig(data,path)
if var_isalways.get() == False:
window.destroy()
print('hh')
data = getconfig("config.txt")
message = data['message']
window = Tk()
window.attributes("-topmost", True)
entry = Entry(window, width=400)
entry.pack()
entry.bind('<Return>', save_message) # 使用save_message函数本身,而不是调用它
entry.insert(0,message)
var_isalways = BooleanVar()
var_isline = BooleanVar()
#导入初始值,variable用来传入save是判断
if data['islinefeed'] == 'True':
# print(data['islinefeed'])
check_isline = Checkbutton(window, text="换行输出",onvalue=True,offvalue=False,variable=var_isline)
var_isline.set(True)
else:
print('id')
check_isline = Checkbutton(window, text="换行输出", state="normal",variable=var_isline)
check_isline.place(x=410,y=0)
if data['isalways'] == 'True':
check_isalways = Checkbutton(window, text="连续模式",variable=var_isalways,onvalue=True,offvalue=False)
var_isalways.set(True)
else:
check_isalways = Checkbutton(window, text="连续模式", onvalue=True,offvalue=False,variable=var_isalways,state="normal")
# print(var_isalways.get())
check_isalways.place(x=515,y=0)
window.geometry(f"625x30+{pyautogui.position()[0]}+{pyautogui.position()[1]}")
window.overrideredirect(1)
window.bind('<Escape>', lambda event: window.destroy())
window.mainloop()