Я довольно плохо знаком с Python GUI и пытаюсь создать простое приложение, которое использует некоторые пользовательские данные для выполнения некоторых вычислений.
Я использую два значения флажков в качестве условий, но их значенияне похоже, чтобы измениться. Всегда получайте 0 / False.
Любая помощь очень ценится.
Я пробовал разные ответы, связанные с похожими на мои проблемы, но, похоже, ни один из них не работает, как, например, изменение типав логическое значение вместо IntVar.
import tkinter as tk
from tkinter import messagebox
class GUI(tk.Tk):
def __init__ (self, *args, **kwargs):
tk.Tk.__init__(self, *args, **kwargs)
tk.Tk.wm_title(self, "Dazza")
self.prnt_name = tk.IntVar()
self.is_zd = tk.IntVar()
self.frame=tk.Frame(self)
self.frame.pack()
tk.Label(self.frame, text='Project Name').grid(row=0, column=0)
self.prjct_ID = tk.Entry(self.frame)
self.prjct_ID.grid(padx=10, pady=10, row=0, column=1)
tk.Label(self.frame, text='Generator No').grid(row=1, column=0)
self.gen_num = tk.Entry(self.frame)
self.gen_num.grid(padx=10, pady=10, row=1, column=1)
tk.Label(self.frame, text='Yes/No').grid(row=0, column=2)
self.prj_check_box = tk.Checkbutton(self.frame, variable = self.prnt_name, command = self.on_click_prj_check_box, \
onvalue = 1, offvalue = 0)
self.prj_check_box.grid(padx=10, pady=10, row=0, column=3)
tk.Label(self.frame, text='ZeroDip').grid(row=1, column=2)
self.zdp_ckeck_box = tk.Checkbutton(self.frame, variable = self.is_zd, command = self.on_click_is_zd, \
onvalue = 1, offvalue = 0)
self.zdp_ckeck_box.grid(padx=10, pady=10, row=1, column=3)
self.plot_button = tk.Button(self.frame, height=2, width=10, text ="Plot", command = lambda: self.check_inputs())
self.plot_button.grid(padx=10, pady=10, row=2, column=1)
self.quit_button = tk.Button(self.frame, height=2, width=10, text ="Quit", command = self.on_quit)
self.quit_button.grid(padx=10, pady=10, row=2, column=2)
def on_quit(self):
self.destroy()
self.quit()
def on_click_prj_check_box(self):
print(self.prnt_name.get())
def on_click_is_zd(self):
print(self.is_zd.get())
def check_inputs(self):
global ready_to_print
ready_to_print=0
if self.prnt_name.get() == 1 and self.prjct_ID.get() != '' and self.gen_num.get() != '':
messagebox.showwarning( "Project ID??", "All Good")
ready_to_print=1
print(self.prnt_name.get())
print(self.prjct_ID.get())
print(self.gen_num.get())
elif self.prnt_name.get() == 0 and self.prjct_ID.get() != '':
messagebox.showwarning( "Project ID??", "If Project ID is required, please select checkbox")
print(self.prnt_name.get())
print(self.prjct_ID.get())
elif self.gen_num.get()=='' and self.is_zd.get()==0:
messagebox.showwarning( "Gen No??", "Please Enter Generator No or Select for Zero Dip")
print(self.gen_num.get())
print(self.is_zd.get())
elif self.prnt_name.get() == 1 and self.prjct_ID.get() == '':
messagebox.showwarning( "Project ID??", "Please Enter Project ID")
print(self.prnt_name.get())
print(self.prjct_ID.get())
else:
messagebox.showwarning( "Project ID??", "Printing without Project ID")
ready_to_print=1
print (ready_to_print)
start_w = GUI()
start_w.resizable(width=False, height=False)
start_w.protocol("WM_DELETE_WINDOW", start_w.on_quit)
start_w.mainloop()