python - 如何从顶层的组合框中获取用户选择的选项
问题描述
我是 Python 和 Tkinter 的新手,正在尝试创建一个界面来搜索和绘制数据。我创建了一个非常简单的toplevel
窗口来获取combobox
从用户中选择的值。但是,我发现如果已设置,脚本只会打印列表中的第一项,comboxlist2.current(0)
或者它不会打印任何内容,无论在框中选择了哪一项。我创建了一个示例脚本来测试它。如果我点击“搜索和创建”,那么返回值可以根据用户在 中的选择而改变comboxlist1
,而无论用户在 中选择什么,它都会返回“1” comboxlist2
。那么请问问题出在哪里以及如何解决?
提前感谢您提供潜在的建议或解决方案!
import tkinter as tk
from tkinter import ttk
from tkinter import *
def root_print():
reg_in = comboxlist1.get()
print(reg_in) #print the value selected
def on_click():
tl = Toplevel()
comvalue2 = tk.StringVar()
comboxlist2 = ttk.Combobox(tl,textvariable=comvalue2)
comboxlist2["values"] = ("1","2","3")
comboxlist2.grid()
comboxlist2.current(0) #select the first one as default
#mm = comboxlist2.get()
#print(mm) #print directly
go(comboxlist2,tl)
tl.wait_window()
return
def go(comboxlist2,tl):
mm = comboxlist2.get()
Button(tl,text='go', command=lambda:test(mm)).grid()
def test(mm):
print(mm) #do the same thing for the comboxlist2
root = Tk()
root.title('search') #create an interface
root.geometry('+400+200') #size and position
Label(text='region ').grid(row=2,column=0)
comvalue1 = tk.StringVar()
comboxlist1=ttk.Combobox(root,textvariable=comvalue1)
comboxlist1["values"]=("all","africa","asia","australia","canada","europe","mexico","southamerica","usa")
comboxlist1.grid(row=2,column=1)
comboxlist1.current(0)
Button(text='search & create', command=root_print).grid(row=0,column=4)
Button(text='click', command=on_click).grid(row=1, column=4)
loop = mainloop()#go!
解决方案
这是工作代码,应该可以满足您的需求。我删除了导入和一些无用的代码片段。
import tkinter as tk
from tkinter import ttk
def root_print():
reg_in = comboxlist1.get()
print(reg_in)
def on_click():
tl = tk.Toplevel()
comvalue2 = tk.StringVar()
comboxlist2 = ttk.Combobox(tl,textvariable=comvalue2)
comboxlist2["values"] = ("1","2","3")
comboxlist2.grid()
comboxlist2.current(0) #select the first one as default
tk.Button(tl,text='go', command=lambda: test(comboxlist2.get())).grid()
tl.wait_window()
def test(mm):
print(mm)
root = tk.Tk()
root.title('search') #create an interface
root.geometry('+400+200') #size and position
tk.Label(text='region ').grid(row=2,column=0)
comvalue1 = tk.StringVar()
comboxlist1=ttk.Combobox(root,textvariable=comvalue1)
comboxlist1["values"]=("all","africa","asia","australia","canada","europe","mexico","southamerica","usa")
comboxlist1.grid(row=2,column=1)
comboxlist1.current(0)
tk.Button(text='search & create', command=root_print).grid(row=0,column=4)
tk.Button(text='click', command=on_click).grid(row=1, column=4)
root.mainloop()
推荐阅读
- javascript - 如何在Materialize CSS中动态匹配选择输入到选择的选项?
- javascript - 我创建了一个实用程序函数,但无法让 useNavigare 在那里工作如何解决这个问题
- elementor - 使用 Elementor Pro 进行反跳电子邮件验证
- go - 为什么 http.SetCookie() 不添加 cookie?
- c# - 来自应用配置的 Azure 函数触发器名称/连接
- r - 无法 git 添加
使用 R 脚本中的 system2 - javascript - cy.intercept() 无法多次模拟同一个 url
- javascript - 无法通过下拉菜单获取选择标签的值
- python - 如何使用 Selenium Python 在网站上单击元素
- javascript - Reactjs - onClick 在第一次点击后工作