页面GUI - Combobox传递变量

时间:2018-02-13 20:11:53

标签: python user-interface tkinter combobox

GUI新手。不太完美。我使用了页面,get可以获取按钮来执行某些操作(单击按钮并获得响应)。使用Combobox,我无法传递值。在这里搜索,尝试了很多东西,看了几个小时的youtube教程。

下面我做错了什么?这是代码页生成的(基本上)然后我添加了我认为我需要做的事情来使用class New_Toplevel_1: def __init__(self, top): self.box_value = StringVar() self.TCombobox1 = ttk.Combobox(textvariable=self.box_value) self.TCombobox1.place(relx=0.52, rely=0.38, relheight=0.05, relwidth=0.24) self.TCombobox1['values']=['1','2','3'] self.TCombobox1.configure(background="#ffff80") self.TCombobox1.configure(takefocus="") self.TCombobox1.bind('<<ComboboxSelected>>',func=select_combobox) def select_combobox(self,top=None): print 'test combo ' # this prints so the bind works self.value_of_combo = self.ttk.Combobox.get() # this plus many other attempts does not work

我只想在组合框中输入1,2,3并打印出所选的值。一旦我想到这一点,我想我实际上可以创建一个传递变量的简单GUI,然后我可以编写我想要选择的这些变量。

{{1}}

1 个答案:

答案 0 :(得分:0)

很难知道您实际上在询问什么,因为您的代码存在多个问题。既然你说print语句正常,我假设你实际代码遇到的唯一问题是最后一行。

要获取组合框的值,请获取相关变量的值:

self.value_of_combo = self.box_value.get()

这是一个工作版本,我修复了程序错误的其他内容:

from tkinter import *
from tkinter import ttk

class New_Toplevel_1:
    def __init__(self, top):

        self.box_value = StringVar()
        self.TCombobox1 = ttk.Combobox(textvariable=self.box_value)

        self.TCombobox1.place(relx=0.52, rely=0.38, relheight=0.05, relwidth=0.24)
        self.TCombobox1['values']=['1','2','3']
        self.TCombobox1.configure(background="#ffff80")
        self.TCombobox1.configure(takefocus="")
        self.TCombobox1.bind('<<ComboboxSelected>>',func=self.select_combobox)

    def select_combobox(self,top=None):
        print('test combo ') # this prints so the bind works
        self.value_of_combo = self.box_value.get()
        print(self.value_of_combo)

root = Tk()
top = New_Toplevel_1(root)
root.mainloop()

注意:我强烈建议您不要以place开头。您应该首先尝试学习packplace。我知道place似乎更容易,但要获得响应最快且最灵活的GUI,您应该利用packgrid的强大功能。