Memasukkan pilihan ComboBox ke dalam kotak Teks - ComboBox dan kotak Teks berada di dalam metode terpisah

Di bawah ini adalah miniatur kode saya. Saya mengalami masalah saat memasukkan opsi yang dipilih Kotak Kombo (real_optn) ke dalam kotak Teks. Saya bahkan tidak bisa mencetak opsi di mana pun di luar metode pengikatan itu sendiri (display_option). Kesalahan yang terus saya dapatkan adalah "Objek 'Sampel' tidak memiliki atribut 'real_optn'". Dalam salah satu uji coba saya, saya menggunakan self.display_option(name) dalam pengikatan daripada self.display_option. Ini berhasil dimasukkan tetapi seperti yang diharapkan, pilihannya tidak diperbarui. Saya telah membaca Mendapatkan nilai yang dipilih dari kotak kombo di Tkinter, Demo ComboBox ttk sederhana dan sejumlah pertanyaan terkait lainnya tapi tidak menjawab pertanyaanku. Petunjuk Anda dihargai!

from tkinter import*
from tkinter import ttk

class Sample:    

    def __init__(self, master,title):
        frame.title(title)
        frame.geometry('1100x500')

    def combo_menu(self,page,name,options):
        self.variable = StringVar()
        self.name = ttk.Combobox(page,values=options)
        self.name.bind("<<ComboboxSelected>>", self.display_option) 
        current = self.name.current(0)
        self.name.pack()

    def display_option(self,event): 
        optn=self.name.get()
        mapping_dic = {
        "1": "A",
        "2": "B",
        "3": "C"
        }
        self.real_optn = mapping_dic.get(optn,"A")
        print(self.real_optn) 

    def output(self,page):
        OutputBox=Text(page)
        OutputBox.pack()
        OutputBox.delete("1.0", "end")
        OutputBox.insert(END, self.real_optn)

frame = Tk()
pop = Sample(frame, "Sample")
pop.combo_menu(frame,"first",[1,2,3,4])
pop.output(frame)

frame.mainloop()

person Adebayo    schedule 10.09.2018    source sumber


Jawaban (1)


Anda memanggil pop.putput(frame) sebelum jendela terlihat, artinya sebelum pengguna dapat memilih apa pun, artinya sebelum Anda membuat self.real_optn.

person Bryan Oakley    schedule 10.09.2018
comment
Terimakasih atas peringatannya. Apa yang Anda sarankan agar saya lakukan agar itu berfungsi? Masalahnya adalah real_optn tidak dikenali sebagai atribut pop yang cukup aneh mengingat display_option adalah metode di kelas. Sebaliknya, saya menemukan bahwa ini berfungsi dengan baik jika saya memindahkan OutputBox.delete("1.0", "end") dan OutputBox.insert(END, self.real_optn) ke dalam display_option. Tapi ini tidak berfungsi untuk proyek saya karena pengguna mungkin ingin mengubah pilihan. Ditambah lagi, ada beberapa kotak kombo lain yang ingin saya keluaran ke Kotak Teks yang sama setelah pilihan diselesaikan. - person Adebayo; 11.09.2018