将ComboBox选择插入文本框-ComboBox和Text框在单独的方法内

时间:2018-09-10 00:30:47

标签: python-3.x tkinter combobox textbox

下面是我的代码的缩影。我在将“组合框”的选定选项(real_optn)插入“文本”框中时遇到问题。我什至无法在绑定方法本身之外的任何位置(display_option)打印该选项。我一直收到的错误是“'Sample'对象没有属性'real_optn'”。在我的一项试用中,我在绑定中使用了self.display_option(name)而不是self.display_option。这样就可以插入了,但是正如人们期望的那样,选择没有更新。我已经阅读了Getting the selected value from combobox in TkinterSimple ttk ComboBox demo和其他一些相关查询,但没有回答我的查询。您的提示表示赞赏!

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()

1 个答案:

答案 0 :(得分:0)

您要在窗口可见之前调用pop.putput(frame),这意味着在用户可以选择任何内容之前,即在您创建self.real_optn之前。