Печать значений из последовательности записей / комбинированных списков

Я хочу построить программу для добавления баскетбольной линейки.

В идеале я хочу, чтобы выходные данные были (в качестве примера): Центр, Джон Пойнт Гарден, Джек Стрелковый Страж, Джеймс

Это будет зависеть от того, сколько значений вы добавляете и что набираете для имени. Я изо всех сил пытаюсь вытащить эти значения, которые введены. Я не получаю ошибку - просто не получаю результаты, которые я ищу. Например, вместо «Point Guard» написано «». Я также не возвращаю значение для полей ввода. Любая помощь будет принята с благодарностью!

«»»

import tkinter as tk
from tkinter import *
from tkinter import ttk

root = Tk() 
menu = Menu(root)
root.config(menu=menu)

combovalues = ['Center' , 'Point Guard' , 'Shooting Guard' , 'Power Forward' , 'Small Forward' ]
startinglineup = []
entry_values = []


root.counter = 2
my_lineup = []
string_var = tk.StringVar()
entry_values.append(string_var)

def addlineup():

    Label(root, text='Lineup Name').grid(row=0) 
    e1 = Entry(root) 
    e1.grid(row=0, column=1)
    combobox = ttk.Combobox(root, values=combovalues)
    combobox.grid(column=0, row=1)
    e2 = Entry(root)
    e2.grid(row=1, column=1)
    addbutton = tk.Button(root, text='Add', width=25, command=add) 
    addbutton.grid(column=0, row=14)
    confirmbutton = tk.Button(root, text='Confirm', width=25, command=save)
    confirmbutton.grid(column=0, row=15)


def save():
    number = root.counter
    print(my_lineup)


def add():
    root.counter += 1
    combobox = ttk.Combobox(root, values=combovalues)
    combobox.grid(column=0, row=root.counter)
    entry = Entry(root) 
    entry.grid(row=root.counter, column=1)
    for stringvar in entry_values:
        text = string_var.get()
        if text:
            my_lineup.append(text)
    my_lineup.append([text, combobox])



# --- main menu ---
filemenu = Menu(menu) 
menu.add_cascade(label='File', menu=filemenu) 


# --- lineups ----
lineupmenu = Menu(menu) 
menu.add_cascade(label='Lineups', menu=lineupmenu) 
lineupmenu.add_command(label='Add Lineup', command=addlineup)
lineupmenu.add_command(label='View Lineups')


mainloop() 

«»»

Всего 1 ответ


Чтобы получить результаты от записи:

  1. Создать StringVar() (если вы хотите сохранить результат в другой переменной, а не в самой записи)
string_var = tk.StringVar()
  1. Создать Entry
entry = tk.Entry(root, textvariable=string_var)
entry.pack() 

Не забудьте добавить string_var к параметру textvariable , textvariable=string_var .

  1. Наконец, получите результат (это можно сделать в любое время)
result = string_var.get()

Или, вы можете просто сделать (если вы не хотите сохранить результат в самой записи) :

entry = tk.Entry(root)
entry.pack() 

result = entry.get()

Вам на самом деле не нужен StringVar