首页 > 解决方案 > 从条目序列/组合框打印值

问题描述

我想建立一个程序来添加一个篮球阵容。

理想情况下,我希望输出为(例如):Center, John Point Guard, Jack Shooting Guard, James

这取决于您添加多少值以及您为名称键入的内容。我正在努力提取这些输入的值。我没有收到错误 - 只是没有得到我正在寻找的结果。例如,它不是“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() 

'''

标签: pythontkinter

解决方案


要从条目中获取结果:

  1. 创建一个StringVar()(如果要将结果存储在不同的变量中而不是Entry本身中)
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自身中)

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

result = entry.get()

你实际上并不需要StringVar


推荐阅读