1

我在临时窗口中使用 tkinter Entry 小部件从用户那里收集信息。我希望能够将该信息用于各种事情:在另一个窗口的标签中重写它,将其转换为整数进行计算,将其值作为字符串写入文件,等等。在这个精简的代码中,我有两个文本变量,并且我使用引号来命名一个而不是另一个。据我了解,使用引号是错误的——例如,没有引号的变量可以与 get 一起正常工作。麻烦的是,当我将它用作不同窗口中标签的文本变量时,没有引号的那个不能正确复制。我在这里想念什么?

from tkinter import *
from tkinter import ttk

root = Tk()

sheetid = StringVar
sheetname = StringVar

def dosheet():
    sheet = Toplevel(root)
    ttk.Label(sheet, text="Sheet ID:").grid(row=0)
    ttk.Label(sheet, textvariable=sheetid, font=(11)).grid(row=1)
    ttk.Label(sheet, text="Sheet Name:").grid(row=2)
    ttk.Label(sheet, textvariable="sheetname", font=(11)).grid(row=3)
#end dosheet

def new():
    def finish():
        start.destroy()
        dosheet()

    start = Toplevel(root)
    start.title("New sheet dialog")
    ttk.Label(start, text="Sheet ID:").grid(row=1)
    ttk.Entry(start, textvariable=sheetid).grid(row=2)
    ttk.Label(start, text="Sheet name:").grid(row=3)
    ttk.Entry(start, textvariable="sheetname").grid(row=4)
    ttk.Button(start, text="Close", command=finish).grid(row=5)
#end new

main = ttk.Frame(root, padding="16 12 12 12")
main.grid()

ttk.Label(main, text="Start new sheet:").grid()
ttk.Button(main, text="New", command=new).grid()

root.mainloop()
4

1 回答 1

0

那这个呢:

# with () you call the class to create a new object (instance) of it.
sheetid = StringVar('sheetid')
sheetname = StringVar('sheetname') 



def dosheet():
    #                             remove "
    ttk.Label(sheet, textvariable=sheetname, font=(11)).grid(row=3)

它有什么作用?

于 2013-05-06T09:20:33.470 回答