Как использовать последний пользовательский ввод в текстовом виджете в операторе If / Else после нажатия Enter?

Ниже приведен пример ES6 того, как вы можете получить доступ к свойству объекта, используя имя свойства, которое было динамически сгенерировано путем объединения двух строк.

var suffix = " name";

var person = {
    ["first" + suffix]: "Nicholas",
    ["last" + suffix]: "Zakas"
};

console.log(person["first name"]);      // "Nicholas"
console.log(person["last name"]);       // "Zakas"

Это называется именами вычисленных свойств

0
задан Flimzy 24 March 2019 в 14:18
поделиться

2 ответа

Я пытаюсь евангелизировать в направлении ооо подхода ... так что посмотрите на сценарий ниже

import tkinter as tk

class App(tk.Frame):

    def __init__(self,):

        super().__init__()

        self.master.title("Hello World")

        self.option =tk.IntVar()
        self.option.set(2)
        self.questions = {0:"Do you like apples?",
                          1:"How about peaches?",
                          2:"I like peaches too.",
                          3:"Have you tried mango?",
                          4:"Great",
                          5:"End of the questions."}

        self.which = tk.IntVar()

        self.which.set(0)

        self.init_ui()

    def init_ui(self):

        self.pack(fill=tk.BOTH, expand=1,)

        f = tk.Frame()

        self.question = tk.Label(f, text = self.questions[0])
        self.question.pack()

        ops = ('Yes','No',)

        for index, text in enumerate(ops):
            tk.Radiobutton(f,
                            text=text,
                            variable=self.option,
                            command=self.callback,
                            value=index,).pack(anchor=tk.W)  

        w = tk.Frame()

        tk.Button(w, text="Print", command=self.callback).pack()
        tk.Button(w, text="Reset", command=self.on_reset).pack()
        tk.Button(w, text="Close", command=self.on_close).pack()

        f.pack(side=tk.LEFT, fill=tk.BOTH, expand=0)
        w.pack(side=tk.RIGHT, fill=tk.BOTH, expand=0)


    def callback(self):

        #print(self.option.get())

        if self.which.get()==0:
            if self.option.get() == 0:
                self.which.set(4)

            else:
                self.which.set(1)

        elif self.which.get()==1:

            if self.option.get() == 0:
                self.which.set(2)
            else:
                self.which.set(3)

        else:
            self.which.set(5)

        a = self.questions[self.which.get()]
        self.question.config(text=a)
        self.option.set(2)            

    def on_reset(self):

       self.which.set(0)
       self.option.set(2)
       a = self.questions[self.which.get()]
       self.question.config(text=a)

    def on_close(self):
        self.master.destroy()

if __name__ == '__main__':
    app = App()
    app.mainloop()
0
ответ дан 1966bc 24 March 2019 в 14:18
поделиться

Спасибо, что нашли время ответить. Я попробовал ваш вариант и не смог как-то заставить его работать.

Я пытался вставить вложенные операторы if в кодовый блок def Enter_presssed (event), и он работает до определенного момента. Он распознает первое «если» и последнее «еще», но не промежуточные и другие между ними.

Разве программа не должна видеть и использовать каждый новый input_get после нажатия Return в качестве ответа на последний вопрос, отображаемый в виджете «Текст»?

0
ответ дан Viktor 24 March 2019 в 14:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: