gpt4 book ai didi

python - 如何从 Checkbutton 获取变量?

转载 作者:太空宇宙 更新时间:2023-11-03 20:59:16 24 4
gpt4 key购买 nike

我使用 Checkbuttons 在单击它时获取数据,但我的变量没有改变,我不知道为什么。通常,未单击时它等于 0,按下时等于 1。但它的 react 就像始终没有被按下一样。

def config(ticket,client,code,state,Date):
def save():
Input_comment = T_Comment.get("1.0", END)
print("--------------")
print("Commentaires :", T_Comment.get("1.0", END))
print("Remboursement :",is_Remb.get())
print("Retour colis :", is_Return.get(),"\tChoix :",var_.get())
print("Geste :", is_Geste.get(), "\tMontant :",e_geste.get())
print("Avoir :", is_Avoir.get())
print("Autres :\t", T_Autre.get("1.0", END) )
print("Details transporteur :", "\n-Transporteur :", e_track_transp.get(), "\nNumero Tracking :", e_track.get())

#UPDATE commentaires SAV
connexion = sqlite3.connect('Base_SAV.db')
curseur = connexion.cursor()
curseur.execute("UPDATE SAV SET Commentaires_SAV= (?) WHERE ID =1", (T_Comment.get("1.0", END),))
connexion.commit()
curseur.close()

#UPDATE Solutions SAV
if is_Remb.get() == 1:
connexion = sqlite3.connect('Base_SAV.db')
curseur = connexion.cursor()
curseur.execute("UPDATE SAV SET Solutions_SAV= 'Remboursement\' WHERE ID =1")
connexion.commit()
curseur.close()
if is_Return.get() == 1:
if var_.get() == 1:
connexion = sqlite3.connect('Base_SAV.db')
curseur = connexion.cursor()
curseur.execute("UPDATE SAV SET Solutions_SAV= 'Retour Colis - Client\n' WHERE ID =1")
connexion.commit()
curseur.close()
elif var_.get() == 2:
connexion = sqlite3.connect('Base_SAV.db')
curseur = connexion.cursor()
curseur.execute("UPDATE SAV SET Solutions_SAV= 'Retour Colis - SAV\n' WHERE ID =1")
connexion.commit()
curseur.close()
if is_Geste.get() == 1:
connexion = sqlite3.connect('Base_SAV.db')
curseur = connexion.cursor()
curseur.execute("UPDATE SAV SET Solutions_SAV= 'Geste commercial\n' WHERE ID =1", )
connexion.commit()
curseur.close()
connexion = sqlite3.connect('Base_SAV.db')
curseur = connexion.cursor()
curseur.execute("UPDATE SAV SET Geste_commercial= (?) WHERE ID =1", (e_geste.get(),) )
connexion.commit()
curseur.close()
if is_Geste.get() == 0:
connexion = sqlite3.connect('Base_SAV.db')
curseur = connexion.cursor()
curseur.execute("UPDATE SAV SET Geste_commercial= NULL WHERE ID =1" )
connexion.commit()
curseur.close()
if is_Avoir.get() == 1:
connexion = sqlite3.connect('Base_SAV.db')
curseur = connexion.cursor()
curseur.execute("UPDATE SAV SET Solutions_SAV= 'Avoir\n' WHERE ID =1")
connexion.commit()
curseur.close()
if is_Autre.get() == 1:
connexion = sqlite3.connect('Base_SAV.db')
curseur = connexion.cursor()
curseur.execute("UPDATE SAV SET Solutions_SAV= (?) WHERE ID =1", (T_Autre.get("1.0", END),))
connexion.commit()
curseur.close()

#UPDATE Details Transporteurs
connexion = sqlite3.connect('Base_SAV.db')
curseur = connexion.cursor()
curseur.execute("UPDATE Commande SET Transporteur= (?) WHERE ID =1", (e_track_transp.get(),))
connexion.commit()
curseur.close()
connexion = sqlite3.connect('Base_SAV.db')
curseur = connexion.cursor()
curseur.execute("UPDATE Commande SET Num_Tracking= (?) WHERE ID =1", (e_track.get(),))
connexion.commit()
curseur.close()
...

config = Tk()
config.wm_state(newstate="zoomed")
config.title('Complément de profil')
config.iconbitmap('MyCatSAV.ico')
config.minsize(1920,1280)
config.maxsize(1920,1280)
config.pack_propagate(0)
config.option_add('*tearOff', FALSE) # Nécessaire avec windows
config.update()
config.geometry(config.geometry())
is_Remb = IntVar()
is_Return = IntVar()
var_ = IntVar()
is_Geste = IntVar()
is_Avoir = IntVar()
is_Autre = IntVar()
e_track_transp = StringVar()
e_track = StringVar()
e_geste = StringVar()

Label(my_frame,text='\n\t\t').grid(row=0, column=0)
Label(my_frame,text='\t\t').grid(row=0, column=1)
Label(my_frame,text='\t\t').grid(row=0, column=2)
L_Comment = Label(my_frame, text='Commentaires SAV :', font=('Arial', 22, 'bold','underline')).grid(row=1, column=1, sticky='w')
T_Comment = Text(my_frame, height=10, width=100,font=('Arial',14))
T_Comment.grid(row=2, column=1,columnspan=7, sticky='w')
L_Solution = Label(my_frame, text='Solutions SAV :', font=('Arial', 22, 'bold','underline')).grid(row=3, column=1, sticky='w')
CB_Remb = Checkbutton(my_frame, text='Remboursement', variable=is_Remb, font=('Arial', 18,'bold'), command=save).grid(row=4, column=1, sticky='w')
CB_Return = Checkbutton(my_frame, text='Retour colis : ', variable=is_Return, font=('Arial', 18,'bold'), command=save).grid(row=5, column=1, sticky='w')
RB_Client = Radiobutton(my_frame, text='Client', variable=var_ , font=('Arial',18,'bold'), value=1, command=save).grid(row=5, column=2, sticky='w')
RB_SAV = Radiobutton(my_frame, text='SAV', variable=var_, font=('Arial',18,'bold'), value=2, command=save).grid(row=5, column=3, sticky='w')
CB_Geste = Checkbutton(my_frame, text='Geste commercial :', variable=is_Geste, font=('Arial', 18,'bold'), command=save).grid(row=6, column=1, sticky='w')
E_Geste = Entry(my_frame, textvariable=e_geste,width=6, font=('Arial', 18,'bold'))
E_Geste.grid(row=6, column=2, sticky='w')
CB_Avoir = Checkbutton(my_frame, text='Avoir', variable=is_Avoir, font=('Arial', 18,'bold'), command=save).grid(row=7, column=1, sticky='w')
CB_Autre = Checkbutton(my_frame, text='Autres : ', variable=is_Autre, font=('Arial', 18,'bold'), command=save).grid(row=8, column=1, sticky='w')
T_Autre = Text(my_frame, width=100, height=2, font=('Arial',14))
T_Autre.grid(row=9, column=1,columnspan=7 ,sticky='w')
CB_Tracking = Label(my_frame, text='Details Transporteur :', font=('Arial', 22,'bold','underline')).grid(row=10, column=1,sticky='w')
CB_Tracking_transp = Label(my_frame, text='-Transporteur :', font=('Arial',16)).grid(row=10, column=2,sticky='w')
CB_N_tracking = Label(my_frame, text='-N° Tracking :', font=('Arial',16)).grid(row=11, column=2,sticky='w')
E_Tracking_transp = Entry(my_frame,textvariable=e_track_transp, width=50, font=('Arial',14)).grid(row=10, column=3,columnspan=3,sticky='w')
E_Tracking_ = Entry(my_frame,textvariable=e_track, width=50, font=('Arial',14)).grid(row=11, column=3,columnspan=3,sticky='w')
my_frame.bind('<Return>', save_)

无论我点击哪个复选按钮,都没有发生任何事情。影响 Checkbutton 的变量没有改变,仍然等于 0。但是当我输入 Text 时,没关系,我只遇到了 Checkbutton 的问题。`

编辑:我发现了我的错误。我使用了两次 Tk() 而不是 Toplevel()

最佳答案

为什么你不使用 ttk.Checkbutton 小部件?

#!/usr/bin/python3
import tkinter as tk
from tkinter import ttk
from tkinter import messagebox


class Main(ttk.Frame):
def __init__(self, parent):
super().__init__()

self.parent = parent

self.check = tk.BooleanVar()

self.init_ui()

def init_ui(self):

self.pack(fill=tk.BOTH, expand=1)

f = ttk.Frame()


ttk.Label(f, text="Checkbutton:").pack()
ttk.Checkbutton(f,
onvalue=1,
offvalue=0,
variable=self.check).pack()

w = ttk.Frame()

ttk.Button(w, text="Callback",command=self.on_callback).pack()
ttk.Button(w, text="Reset", command=self.on_reset).pack()
ttk.Button(w, text="Set", command=self.on_set).pack()
ttk.Button(w, text="Close", command=self.on_close).pack()

f.pack(side=tk.LEFT, fill=tk.BOTH, expand=1)
w.pack(side=tk.RIGHT, fill=tk.BOTH, expand=1)


def on_callback(self,):

print ("self.check = {}".format(self.check.get()))


def on_reset(self):

self.check.set(0)

def on_set(self):

self.check.set(1)


def on_close(self):
self.parent.on_exit()

class App(tk.Tk):
"""Start here"""

def __init__(self):
super().__init__()

self.protocol("WM_DELETE_WINDOW", self.on_exit)

self.set_title()
self.set_style()

frame = Main(self,)
frame.pack(fill=tk.BOTH, expand=1)

def set_style(self):
self.style = ttk.Style()
#('winnative', 'clam', 'alt', 'default', 'classic', 'vista', 'xpnative')
self.style.theme_use("clam")


def set_title(self):
s = "{0}".format('Simple App')
self.title(s)

def on_exit(self):
"""Close all"""
if messagebox.askokcancel("Simple App", "Do you want to quit?", parent=self):
self.destroy()

if __name__ == '__main__':
app = App()
app.mainloop()

关于python - 如何从 Checkbutton 获取变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55808909/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com