Значения флажка Tkinter не меняются, всегда 0 / Flase. В Python 3.7 / IDE: Spyder 3.3.6 - PullRequest
0 голосов
/ 26 октября 2019

Я довольно плохо знаком с 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...