Я новичок в этом графическом бизнесе с python2.7 и Tkinter. Я пытаюсь создать новый кадр в зависимости от того, какой Radiobutton пользователь выбирает, как меню. Когда я нажимаю на радиатор, он создает новый кадр, как я хочу, но если я продолжаю нажимать на тот же самый радиобуй, он создаст еще один кадр, другой кадр и т. Д. Не может показаться, что нужно выяснить, как проверить если Radiobutton уже отмечен (щелкнул только один раз).Tkinter Radiobutton порождает рамки
Надеюсь, я прояснился, благодарен за помощь!
class Books:
""" Books() is the main class for creating the whole interface """
def __init__(self):
""" Initialize the first function in class Books() """
self.library = "library.txt"
self.filepath = os.getcwd() + "/" + self.library
self.window = Tk()
self.window.title("Personal library")
self.window.wm_iconbitmap(default="myicon.ico")
userChoice = Frame(self.window, height = 1, bd = 1, relief = RIDGE)
userChoice.pack(side = TOP, pady = 10, padx = 5)
self.menuChoice = IntVar()
btAddBooks = Radiobutton(userChoice, text = "Add a new book to the library", value = 1, variable = self.menuChoice, command = self.processChoice)
btAddBooks.grid(row = 1, sticky = W)
btFindBooks = Radiobutton(userChoice, text = "Print info about a book", value = 2, variable = self.menuChoice, command = self.processChoice)
btFindBooks.grid(row = 2, sticky = W)
btPrintBooks = Radiobutton(userChoice, text = "Print all book titles in library", value = 3, variable = self.menuChoice, command = self.processChoice)
btPrintBooks.grid(row = 3, sticky = W
def processChoice(self):
""" Used to handle user choice of Radiobuttons """
if self.menuChoice.get() == 1:
self.processAddBooks()
elif self.menuChoice.get() == 2:
self.processFindBook()
elif self.menuChoice.get() == 3:
self.processShowBooks(self.filepath)
def processAddBooks(self):
""" Add a new book to the library. """
# Create a new frame
questions = Frame(self.window, height = 1, bd = 1, relief = SUNKEN)
questions.pack(fill = X, pady = 10, padx = 5)
# Do stuff with frame here...
Радиоуправления не предназначены для такого рода использования. Они предназначены для выбора, а не для выполнения действий. Я подозреваю, что ваши пользователи будут удивлены, когда они сделают выбор, и появится окно. –
Хорошо, спасибо. Просто хотел сделать программу «гладкой». Я пропущу его и внедрив вместо этого кнопку «Отправить». – telnetmaster