在python中获取组合框值

时间:2017-01-07 14:23:26

标签: python tkinter combobox ttk

我正在开发一个简单的程序,我需要从组合框中获取值。当组合框在第一个创建的窗口中时很容易,但是例如如果我有两个窗口并且组合框在第二个窗口中我无法读取值。

例如:

from tkinter import *
from tkinter import ttk

def comando():
    print(box_value.get())

parent = Tk() #first created window
ciao=Tk()     #second created window
box_value=StringVar()
coltbox = ttk.Combobox(ciao, textvariable=box_value, state='readonly')
coltbox["values"] = ["prova","ciao","come","stai"]
coltbox.current(0)
coltbox.grid(row=0)
Button(ciao,text="Salva", command=comando, width=20).grid(row=1)
mainloop()

如果我将小部件的父级从ciao更改为父级,则可以正常工作! 有人能解释一下吗? 提前谢谢,抱歉我的英文不好

2 个答案:

答案 0 :(得分:1)

你不能有两个Tk()窗口。一个人必须是Toplevel。

获取你做的变量box_value.get()

下拉框的示例

TLB

打印(self.current_table.get())

答案 1 :(得分:0)

from tkinter import *
from tkinter import ttk
from tkinter import messagebox


root = Tk()

root.geometry("400x400")
#^ Length and width window :D


cmb = ttk.Combobox(root, width="10", values=("prova","ciao","come","stai"))
#^to create checkbox
#^cmb = Combobox


#now we create simple function to check what user select value from checkbox

def checkcmbo():

if cmb.get() == "prova":
     messagebox.showinfo("What user choose", "you choose prova")

#^if user select prova show this message 
elif cmb.get() == "ciao":
    messagebox.showinfo("What user choose", "you choose ciao")

 #^if user select ciao show this message 
elif cmb.get() == "come":
    messagebox.showinfo("What user choose", "you choose come")

elif cmb.get() == "stai":
    messagebox.showinfo("What user choose", "you choose stai")

elif cmb.get() == "":
    messagebox.showinfo("nothing to show!", "you have to be choose something")




cmb.place(relx="0.1",rely="0.1")

btn = ttk.Button(root, text="Get Value",command=checkcmbo)
btn.place(relx="0.5",rely="0.1")

root.mainloop()