gpt4 book ai didi

python - 如何不断更新变量(使用带有 tkinter 的 spinbox)?

转载 作者:太空宇宙 更新时间:2023-11-03 21:09:00 25 4
gpt4 key购买 nike

我的程序中有两个旋转框,是用 tkinter 创建的。我希望将用户选择的变量添加到列表中,以便稍后在程序中使用这些值。我当前遇到的问题是这些值在列表中仅存储一次,尽管我尝试了所有方法,但我无法更新它们。需要明确的是,我只想要列表中的两个值,因此当用户选择另一个数字时,它将替换列表中存储的正确值。

这是我编写的代码:

from tkinter import *

windowTk = Tk()
pwMain = PanedWindow(windowTk, orient=VERTICAL)
pwTop = PanedWindow(pwMain, orient=HORIZONTAL)

def configTables() :

sLine = Spinbox(pwTop, from_=0, to=15)
pwTop.add( Label(pwTop, text = "Combien y a-t-il de lignes de table ?") )
pwTop.add( sLine )

sColumn = Spinbox(pwTop, from_=0, to=15)
pwTop.add( Label(pwTop, text = "Combien y a-t-il de colonnes de tables ?") )
pwTop.add( sColumn )

pwTop.pack()

pwMain.pack()

global coordTables
coordTables = []
coordTables.append( int(sLine.get()) )
coordTables.append( int(sColumn.get()) )
return coordTables


print( configTables() )
windowTk.mainloop()

我希望我的请求能够被理解,这样你就可以帮助我。

谢谢

LoneRetrievr

更新:我尝试了以下代码,它有效,但窗口中没有出现任何内容(tkinter 的窗口保持白色)。

from tkinter import *

windowTk = Tk()
pwMain = PanedWindow(windowTk, orient=VERTICAL)
pwTop = PanedWindow(pwMain, orient=HORIZONTAL)

lines = IntVar(windowTk, value=0)
columns = IntVar(windowTk, value=0)

def configTables() :

sLine = Spinbox(pwTop, from_=0, to=15, textvariable=lines)
pwTop.add( Label(pwTop, text = "Combien y a-t-il de lignes de tables ?") )
pwTop.add( sLine )

sColumn = Spinbox(pwTop, from_=0, to=15, textvariable=columns)
pwTop.add( Label(pwTop, text = "Combien y a-t-il de colonnes de tables ?") )
pwTop.add( sColumn )

pwTop.pack()
pwMain.pack()

numberLines = lines.get()
numberColumns = columns.get()
print( numberLines, numberColumns )
windowTk.mainloop()

我知道它只会打印一次值,这就是我想要它做的。你能帮助我吗 ?我觉得很简单,但是没找到问题出在哪里。

最佳答案

您可以使用 IntVar 将旋转框连接到 Python 变量。我用一个例子扩展了你的程序。它添加了一个按钮来打印旋转框的当前值:

from tkinter import *

windowTk = Tk()
pwMain = PanedWindow(windowTk, orient=VERTICAL)
pwTop = PanedWindow(pwMain, orient=HORIZONTAL)
lignes = IntVar(windowTk, value=0)
colonnes = IntVar(windowTk, value=0)

def print_vars():
print(lignes.get(), colonnes.get())

def configTables() :

sLine = Spinbox(pwTop, from_=0, to=15, textvariable=lignes)
pwTop.add( Label(pwTop, text = "Combien y a-t-il de lignes de table ?") )
pwTop.add( sLine )

sColumn = Spinbox(pwTop, from_=0, to=15, textvariable=colonnes)
pwTop.add( Label(pwTop, text = "Combien y a-t-il de colonnes de tables ?") )
pwTop.add( sColumn )

pwTop.pack()

b = Button(pwMain, text='print', command=print_vars)
b.pack(side=BOTTOM)

pwMain.pack()

global coordTables
coordTables = []
coordTables.append( int(sLine.get()) )
coordTables.append( int(sColumn.get()) )
return coordTables


print( configTables() )
windowTk.mainloop()

请注意,我没有删除不再需要的内容,例如 coordTables 变量和 return 语句。

关于python - 如何不断更新变量(使用带有 tkinter 的 spinbox)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55195722/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com