我不熟悉python和tkinter,所以在命名for循环中创建的条目小部件时遇到了困难。我的目标是我的图形用户界面解决用户的线性规划优化问题的乐趣。我首先问用户在他们的问题中有多少变量,假设输入了n变量。然后我创建一个for循环,创建与每个变量对应的n条目小部件,以存储该变量的系数值。我知道如何创建一个单条目小部件并命名它,这样我就可以通过name.get()来访问它。在我的代码中,我试图创建一个字符串name=“x”+str(I),其中I是for循环递增变量。但是当我例如调用x1.get()时,我得到一个错误,即x1没有被定义。我怎么解决这个问题?提前谢谢你的帮助。在
import tkinter as tkr
def objCos():
x1Co = x1.get()
print(x1Co)
def objFunction():
global varFrame
numOfVars = ofEntry.get()
numOfVars = int(numOfVars)
varFrame.destroy()
varFrame = tkr.Frame(root)
varFrame.pack(side = tkr.BOTTOM)
varLabel = tkr.Label(varFrame, text = "Enter Objective Function Coefficients: ")
varLabel.grid(row = 0, columnspan = 2)
for i in range(1,numOfVars+1):
strName = 'x' + str(i)
strName = tkr.Entry(varFrame)
strName.grid(row = i, column = 1)
lbName = "varLabel" + str(i)
lbName = tkr.Label(varFrame, text = "x"+ str(i) + " = ")
lbName.grid(row = i, column = 0)
varButton = tkr.Button(varFrame, text = "Update Objective Function Coefficients",
bg = "light grey", command = objCos)
varButton.grid(row = numOfVars + 1, columnspan = 2)
root = tkr.Tk()
ofFrame = tkr.Frame(root)
ofFrame.pack(side = tkr.TOP)
global varFrame
varFrame = tkr.Frame(root)
varFrame.pack(side = tkr.BOTTOM)
ofLabel = tkr.Label(ofFrame, text = "Enter Number of Variables: ")
ofLabel.grid(row = 0, column = 0)
ofEntry = tkr.Entry(ofFrame)
ofEntry.grid(row =0, column = 1)
ofButton = tkr.Button(ofFrame, text = "Update Number of Variables",
bg = "light grey", command = objFunction)
ofButton.grid(row = 1, columnspan = 2)
root.mainloop()
例如,您可以使用简单的结构来保存vidget,下面是我的一个旧函数中的一个示例:)
就像这里,
self.creation_panel
是一个dict也许这不是最好的办法,其他人会纠正我的。但有一种可能的方法。在
self.navigate
变量用于导航,因为类只表示GUI的MVC模型中的视图:)。如果它发生了变化,那么从控制器发出信号,得到新的模型并称为新视图。或者类似的,我不记得那个老项目了。在您可以有一个条目小部件列表。下面我修改了部分代码,以便在创建时将每个条目附加到
entries
。在您可以使用该列表访问稍后输入的数据。在
作为副产品,tkinter通常作为tk而不是tkr进口。对其他人的行动没有帮助,但对你没有帮助。在
相关问题 更多 >
编程相关推荐