(Ironpython/Winforms) 从 for 循环中生成的文本框中检索值
(Ironpython/Winforms) Retrieve value from textbox made in for loop
我正在使用 ironpython 和 winform 在 for 循环中创建文本框。我在获取创建的文本框的值时遇到问题。
一个例子是我无法获取 self 的值。name1.Text 当单击一个按钮时应该检索该值。
import clr
clr.AddReference('System.Windows.Forms')
clr.AddReference('System.Drawing')
from System.Windows import *
from System.Drawing import *
from System.Windows.Forms import *
number=7
class Part1(Form):
def __init__(self):
y=0
#textbox
for x in range(0,number):
name="name" + str(x)
self.name = TextBox()
self.name.Text=str(name)
self.name.Location = Point(0,y)
self.Controls.Add(self.name)
y=y+25
#button
self.but = Button()
self.but.Text = "Click me"
self.but.Location = Point(0, y)
self.but.Click += self.but_click
self.Controls.Add(self.but)
#button function
def but_click(self, sender, args):
MessageBox.Show(self.name1.Text)
form = Part1()
Application.Run(form)
为什么我无法获取这些文本框的值,我需要 change/add 什么才能获取它们?
谢谢
您正在用每个新创建的文本框覆盖 self.name
。此外,稍后您尝试使用不存在的 self.name1
。您需要将所有文本框存储到一个列表中,以便跟踪它们并在以后访问它们。
self.name = [None] * number
for x in range(0,number):
name="name" + str(x)
self.name[x] = TextBox()
self.name[x].Text=str(name)
self.name[x].Location = Point(0,y)
self.Controls.Add(self.name[x])
y=y+25
然后通过列表访问它
def but_click(self, sender, args):
MessageBox.Show(self.name[1].Text)
我正在使用 ironpython 和 winform 在 for 循环中创建文本框。我在获取创建的文本框的值时遇到问题。
一个例子是我无法获取 self 的值。name1.Text 当单击一个按钮时应该检索该值。
import clr
clr.AddReference('System.Windows.Forms')
clr.AddReference('System.Drawing')
from System.Windows import *
from System.Drawing import *
from System.Windows.Forms import *
number=7
class Part1(Form):
def __init__(self):
y=0
#textbox
for x in range(0,number):
name="name" + str(x)
self.name = TextBox()
self.name.Text=str(name)
self.name.Location = Point(0,y)
self.Controls.Add(self.name)
y=y+25
#button
self.but = Button()
self.but.Text = "Click me"
self.but.Location = Point(0, y)
self.but.Click += self.but_click
self.Controls.Add(self.but)
#button function
def but_click(self, sender, args):
MessageBox.Show(self.name1.Text)
form = Part1()
Application.Run(form)
为什么我无法获取这些文本框的值,我需要 change/add 什么才能获取它们?
谢谢
您正在用每个新创建的文本框覆盖 self.name
。此外,稍后您尝试使用不存在的 self.name1
。您需要将所有文本框存储到一个列表中,以便跟踪它们并在以后访问它们。
self.name = [None] * number
for x in range(0,number):
name="name" + str(x)
self.name[x] = TextBox()
self.name[x].Text=str(name)
self.name[x].Location = Point(0,y)
self.Controls.Add(self.name[x])
y=y+25
然后通过列表访问它
def but_click(self, sender, args):
MessageBox.Show(self.name[1].Text)