【问题标题】:python 3 Tkinter ComboBox don't get valuepython 3 Tkinter ComboBox没有价值
【发布时间】:2018-04-26 01:52:10
【问题描述】:

我正在尝试使用 python 3.6 从 tkinter 中的组合框获取值,我一直在寻找许多教程,但我还没有看到问题。 每次我按下按钮都不显示任何内容。 但也没有错误。 所以澄清一下......当我按下 ttk.Button 时,我试图获取 tk.combobox 的值。 提前感谢您的任何想法或 cmets。 这就是我目前所拥有的。

import tkinter as tk
from tkinter import ttk


def combo_box_updater():
    total_location = ['linden', 'mineola', 'brooklyn']
    return total_location


def start_analisys(event=None):
    site = jobsite_name.get()
    print(site)


# this is part of a definition that automatically will update the names in later versions
job_site = combo_box_updater()


#  basic gui setup
unified = tk.Toplevel()
unified.title('Unified 1 Week Timesheet')
unified.configure(background="#00012f")
unified.geometry("650x200")
unified.resizable(width=False, height=False)
entry_width = 30


#  basic frame
frame1 = tk.Frame(unified)
frame1.grid(row=0, column=0, sticky='w')


#  combo box in the fourth row
jobsite_name = tk.StringVar()
combo_box = ttk.Combobox(frame1, font="none 12 bold", width=20, textvariable=jobsite_name, text="choose location")
combo_box.grid(row=0, column=1, sticky="wesn")
combo_box['values'] = [x for x in job_site]

#  Left button side
ttk.Button(frame1, text='Run', command=start_analisys, ).grid(row=0, column=2, sticky='nsew', rowspan=3)

unified.mainloop()

【问题讨论】:

  • 运行您的代码时设置有点奇怪,但我可以看到正在打印的值。

标签: python python-3.x tkinter combobox ttk


【解决方案1】:

对您的代码进行了三处小修改:添加了一个标签来显示结果,在组合框设置中添加了一行,并更改了主窗口的创建。

import tkinter as tk
from tkinter import ttk


def combo_box_updater():
    total_location = ['linden', 'mineola', 'brooklyn']
    return total_location


def start_analisys(event=None):
    site = jobsite_name.get()
    aLabel["text"] = site
    print(site)


# this is part of a definition that automatically will update the names in later versions
job_site = combo_box_updater()


#  basic gui setup
unified = tk.Tk()
unified.title('Unified 1 Week Timesheet')
unified.configure(background="#00012f")
unified.geometry("650x200")
unified.resizable(width=False, height=False)
entry_width = 30


#  basic frame
frame1 = tk.Frame(unified)
frame1.grid(row=0, column=0, sticky='w')


#  combo box in the fourth row
jobsite_name = tk.StringVar()
combo_box = ttk.Combobox(frame1, font="none 12 bold", width=20, textvariable=jobsite_name)
combo_box.grid(row=0, column=1, sticky="wesn")
combo_box['values'] = [x for x in job_site]
combo_box.current(0)
#  Left button side
ttk.Button(frame1, text='Run', command=start_analisys, ).grid(row=0, column=2, sticky='nsew', rowspan=3)

# add a label
aLabel = ttk.Label(frame1, text='My Label')
# place the label
aLabel.grid(column=3, row=0)


unified.mainloop()
if __name__ == '__main__':
    pass

【讨论】:

  • 我仍在分析您的代码,但它运行良好。非常感谢
  • 没问题Caser Rodriguex。如果您有任何问题,请告诉我。
【解决方案2】:

当您像这样事后添加值时,您还需要添加相应的命令。最好通过 init 方法添加值,以便自动添加命令:

jobsite_name = tk.StringVar(value="choose location")
combo_box = ttk.Combobox(frame1, textvariable=jobsite_name, values=job_site, font="none 12 bold", width=20)

【讨论】:

  • 谢谢 Novel 的回答,但我发现唯一打印的是“选择位置”,如何让它获得下拉框的值。我是 python 和 tkinter 的新手。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-15
  • 1970-01-01
  • 2022-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多