Python 3 Tkinter ComboBox не получить значение - PullRequest
0 голосов
/ 26 апреля 2018

Я пытаюсь получить значение из выпадающего списка в tkinter, используя python 3.6, я искал много уроков, но пока не вижу проблемы.каждый раз, когда я нажимаю кнопку, ничего не показывать.но также нет ошибок.чтобы уточнить ... Я пытаюсь получить значение tk.combobox, когда я нажимаю ttk.Button.заранее спасибо за любые идеи или комментарии.это то, что у меня есть.

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

Ответы [ 2 ]

0 голосов
/ 26 апреля 2018

Внесены три незначительные правки в ваш код: добавлена ​​метка для отображения результата, добавлена ​​строка для настройки поля со списком и изменено создание главного окна.

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
0 голосов
/ 26 апреля 2018

Когда вы добавляете значения в виде запоздалой мысли, вам нужно также добавить соответствующие команды.Гораздо лучше добавлять значения через метод 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)
...