在python中获取组合框值

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/41522427/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-20 01:09:37  来源:igfitidea点击:

Get combobox value in python

pythontkintercomboboxttk

提问by Damien

I'm developing an easy program and I need to get the value from a combobox. It is easy when the combobox is in the first created windows but for example if I have two windows and the combobox is in the second I can't read the value.

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

For example:

例如:

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

If I change the parent of the widget from ciao to parent it works! Can anyone explain me? Thanks in advance and sorry for my bad english

如果我将小部件的父级从 ciao 更改为父级,它会起作用!谁能给我解释一下?预先感谢并为我的英语不好而感到抱歉

采纳答案by Joshua Nixon

You cannot have two Tk() windows. one must be Toplevel.

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

to get the variable you do box_value.get()

得到你做的变量 box_value.get()

example of a drop down box

下拉框示例

class TableDropDown(ttk.Combobox):
    def __init__(self, parent):
        self.current_table = tk.StringVar() # create variable for table
        ttk.Combobox.__init__(self, parent)#  init widget
        self.config(textvariable = self.current_table, state = "readonly", values = ["Customers", "Pets", "Invoices", "Prices"])
        self.current(0) # index of values for current table
        self.place(x = 50, y = 50, anchor = "w") # place drop down box 

print(self.current_table.get())

打印(self.current_table.get())

回答by Machine

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