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}}
答案 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
开头。您应该首先尝试学习pack
和place
。我知道place
似乎更容易,但要获得响应最快且最灵活的GUI,您应该利用pack
和grid
的强大功能。