简体   繁体   中英

Tkinter button not working (Python 3.x)

I'm working on my final project for my computing I class.

The problem that I am having is:
When I click on the new entry button, hit the back button and click on the new entry button once again it does not work .

If you guys could tell me why that is?

The command on the button seems to be only working once. Thanks for your help.

Code:

from tkinter import *
import tkinter.filedialog

class App(Tk):
def __init__(self):
    Tk.__init__(self)
    self.title("Entry Sheet")
    self.font = ("Helvetica","13")
    self.header_font = ("Helvetica","18")
    self.exercise_font = ("Helvetica","13","bold")
    self.delete = 'a'
    self.new_user()



def new_user(self):
    if self.delete == 'b':
        self.delete = 'c'
        self.hide()

    self.delete = 'b'

    self.new_entry = Button(self, text = 'New Entry', command = self.entry, width = 15)
    self.new_entry.grid(row = 1, column = 0, columnspan = 3, padx = 10, pady = 5)

    self.look_entry = Button(self, text = 'See Entries', command = self.see_entries, width = 15)
    self.look_entry.grid(row = 2, column =0, columnspan = 3, padx = 10, pady = 5)

def entry(self):
    print(1)
    self.delete = 'b'
    self.hide()

    self.entry = Label(self, text = 'New Entry', font = self.header_font)
    self.entry.grid(row = 0, column = 0, columnspan = 2)

    self.numberlbl = Label(self, text = 'Please choose a muscle?', font = self.font)
    self.numberlbl.grid(row = 1, column= 0, columnspan = 2, sticky = 'w' )

    self.muscle_chosen = IntVar()
    self.chest = Radiobutton(self, text = "chest", variable = self.muscle_chosen, value = 1, font = self.font)
    self.bicep = Radiobutton(self, text = "bicep", variable = self.muscle_chosen, value = 2, font = self.font)
    self.chest.grid(row = 2, column = 0)
    self.bicep.grid(row = 2, column = 1)

    self.exerciseslbl = Label(self, text = 'Please enter the number of exercises: ', font = self.font)
    self.exerciseslbl.grid(row = 3, column = 0, columnspan = 3)

    self.exercises_spinbox = Spinbox(self, from_= 1, to_= 50, width = 5, font = self.font)
    self.exercises_spinbox.grid(row = 4, column = 0)

    self.back_button = Button(self, text = 'Back', command = self.new_user, width = 10)
    self.back_button.grid(row =5, column=0, pady =10)   

def see_entries(self):
    print("Goes through")


def hide(self):
    if self.delete == 'b':
        self.new_entry.grid_remove()
        self.look_entry.grid_remove()
    elif self.delete == 'c':
        self.entry.grid_remove()
        self.numberlbl.grid_remove()
        self.chest.grid_remove()
        self.bicep.grid_remove()
        self.exerciseslbl.grid_remove()
        self.exercises_spinbox.grid_remove()
        self.back_button.grid_remove()


def main():
    app = App()
    app.mainloop()

if __name__=="__main__":
    main()

In your entry function you overwrite self.entry , which is the name of the function, with a reference to a Label . When the button then calls self.entry it isn't function.
Simply call the Label something else.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM