如何使tkinter复选框在未选中时不写入文件


from tkinter import *
Lab = Tk()
Lab.title("Lab department")
Lab.geometry("400x200+200+100")
nameLabel = Label(Lab, text="First name: ",font="Aerial 10")
nameLabel.grid(row=0, column=0)
name_entry = Entry(Lab, width=20)
name_entry.grid(row=0, column=1)
#create upt test checkbox to select the test
uptVar = StringVar()
upt = Checkbutton(Lab, text="U.P.T ",variable=uptVar, onvalue="UPT", offvalue="")
upt.deselect()
upt.grid(row=1, column=0)
#a label for upt results selction
upt_label = Label(Lab, text="UPT Results ", font="Aerial 10")
upt_label.grid(row=1, column=1)
# the dropdown menu for upt results
uptResults = ["Positive",
"Negative"]
uptresult_Var = StringVar()
uptresult_Var.set(uptResults[0])
upt_checkbox = OptionMenu(Lab, uptresult_Var, *uptResults)
upt_checkbox.grid(row=
1, column=2)

preg = "UPT"
def upt_clients():
fullname = name_entry.get()

preg_details = fullname + " " + uptVar.get() +" "+  uptresult_Var.get() + "n"
with open(preg, "a") as pregFile:
pregFile.write(preg_details)
pregFile.close()

uptButton = Button(Lab, text="upt record",command=upt_clients)
uptButton.grid(row=1, column=3) 

`我正在使用tkinter复选框,我想在选中该复选框时写入文件。

我不能得到的是,当复选框未选中时不写入文件。通过的任何帮助

根据您的问题,我认为您正在努力实现的是:如果选中复选框"U.P.T",则希望将数据附加到变量preg定义的文件中如果取消选中该复选框,则不希望追加到文件中。

考虑到以上是您的目标,您的代码有几个问题,如图所示。

  1. 您需要在末尾添加一个语句Lab.mainloop(),以显示Lab窗口
  2. 在尝试写入文件之前,您需要添加复选框状态的测试
  3. 您需要在主方法和子函数upt_client中声明uptVar、upptresult_Var为全局变量

以下是包含这些更改的更新代码:

from tkinter import *
global uptVar, uptresult_Var
Lab = Tk()
Lab.title("Lab department")
Lab.geometry("400x200+200+100")
nameLabel = Label(Lab, text="First name: ",font="Aerial 10")
nameLabel.grid(row=0, column=0)
name_entry = Entry(Lab, width=20)
name_entry.grid(row=0, column=1)
#create upt test checkbox to select the test
uptVar = StringVar()
upt = Checkbutton(Lab, text="U.P.T ",variable=uptVar, onvalue="UPT", offvalue="")
upt.deselect()
upt.grid(row=1, column=0)
#a label for upt results selction
upt_label = Label(Lab, text="UPT Results ", font="Aerial 10")
upt_label.grid(row=1, column=1)
# the dropdown menu for upt results
uptResults = ["Positive",
"Negative"]
uptresult_Var = StringVar()
uptresult_Var.set(uptResults[0])
upt_checkbox = OptionMenu(Lab, uptresult_Var, *uptResults)
upt_checkbox.grid(row= 1, column=2)

preg = "UPT"
def upt_clients():
global uptVar, uptresult_Var
fullname = name_entry.get()        
preg_details = fullname + " " + uptVar.get() +" "+  uptresult_Var.get() + "n"  
if uptVar.get():
with open(preg, "a") as pregFile:
pregFile.write(preg_details)
pregFile.close()

uptButton = Button(Lab, text="upt record",command=upt_clients)
uptButton.grid(row=1, column=3) 
Lab.mainloop()

最新更新