Печать текста в зависимости от секции переключателей - PullRequest
0 голосов
/ 07 апреля 2019

Часть, которую я пытаюсь исправить в моем скрипте, отобразит окно с двумя радиокнопками и кнопкой сохранения. При нажатии кнопки печатается сообщение, которое зависит от того, был ли выбран параметр.

from tkinter import *
from tkinter import ttk

class MyApp(Tk):

    def __init__(self):
        Tk.__init__(self)
        container = ttk.Frame(self)
        container.pack(side="top", fill="both", expand = True)
        self.frames = {}
        for F in (PageOne, PageTwo):
            frame = F(container, self)
            self.frames[F] = frame
            frame.grid(row=0, column=0, sticky = NSEW)
        self.show_frame(PageOne)

    def show_frame(self, cont):
        frame = self.frames[cont]
        frame.tkraise()

    def get_page(self, classname):
        for page in self.frames.values():
            if str(page.__class__.__name__) == classname:
                return page
        return None

Class PageOne - это то, что я сейчас пытаюсь исправить в функции Validate если выбрана и сохранена радиокнопка 1, то я хочу напечатать дозирование малых сумм, а если радиокнопка 2 выбрана и сохранена, то я хочу напечатать дозирование средних сумм.

class PageOne(ttk.Frame):
    def __init__(self, parent, controller):
        ttk.Frame.__init__(self, parent)
        ttk.Label(self, text='PageOne').grid(padx=(20,20), pady=(20,20))
        self.controller = controller
        self.make_widget(controller)

    def make_widget(self, controller):
        self.some_input = StringVar
        self.some_entry = ttk.Entry(self, textvariable=self.some_input, width=8) 
        self.some_entry.grid()

        self.v = StringVar()
        self.v.set("b")

        button1 = ttk.Button(self, text='Next Page',
                              command=lambda: controller.show_frame(PageTwo))
        button1.grid()
        Rad1 = ttk.Radiobutton(self, text="SMALL",variable=self.v, value="a")                   
        Rad1.grid()

        Rad2 = ttk.Radiobutton(self, text="MEDIUM",variable=self.v, value="b")                  
        Rad2.grid()

        button2 = ttk.Button(self, text="SAVE", command=validate)
        button2.grid()

    def validate(self):
       value = self.v.get()
       if value == "a":
           print("Small Amount Dispensing")
       elif value == "b":
           print("Medium Amount Dispensing")
       else:
           print("An option must be selected")
app = MyApp()
app.title('Multi-Page Test App')
app.mainloop()
``````

1 Ответ

0 голосов
/ 07 апреля 2019

Вы должны использовать self. в command=self.validate

 button2 = ttk.Button(self, text="SAVE", command=self.validate)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...