簡體   English   中英

如何在Python中保存多個文本框對話框的輸入?

[英]How can I save the input for multiple textbox dialog in Python?

我正在嘗試在ironpython中構建一個對話框窗口,該對話框窗口為具有多列的表的用戶輸入提供多個文本框。 但是,我很難將用戶輸入值傳遞給另一個函數。 我的代碼如下:

self.newVal = []
for column in columns:
            self.label = Label()
            self.label.Text = col
            self.label.Location = Point(10, offset)
            self.cb = Textbox()
            self.cb.Text = "Type in new value"
            self.cb.Location = Point(150,offset)
            self.cb.Height = 20
            self.cb.Width = 295
            self.cb.Enabled = True
            self.Controls.Add(self.label)
            self.Controls.Add(self.cb)
            self.newVal.append(self.cb.Text)
            offset = offset + 30

問題是,從此代碼傳遞的self.newVal只是“鍵入新值”的原始消息,當被另一個函數調用時,它實際上並沒有在文本框中獲取用戶輸入的值。 實際上,如果從另一個函數引用self.cb.Text ,則該值是用戶新鍵入的值。 但這對我不起作用,因為self.cb.Text僅提供最后一列的輸入。 盡管self.newVal包含所有列值,但是self.newVal ,它不會使用用戶輸入進行更新。

另一個相關的問題。 我試圖通過定義多個文本框並逐個傳遞它們來解決此問題。 但是我找不到在self.之后使用變量的方法self. 例如,在上面的代碼中,如果我使用self.col而不是self.cb ,那么代碼在這里並沒有真正將col作為變量,我得到的只是一個self.col ,而col是一個字符串,正好是與使用self.cb相同。 self.之后是否可以使用變量self. 在上課嗎?

謝謝furas! 使用self.all_cb.append(self.cb)代替self.newVal.append(self.cb.Text)解決了該問題。

如前文所述,您將需要將每個初始化的TextBox添加到列表中,或為每個TextBox創建一個新變量。 例如:

self.textbox_list = []
for _ in columns:
    textbox = TextBox()
    self.textbox_list.append(textbox)

盡管我更喜歡引用一個dictionary ,其中的鍵是各列:

self.textbox_dict = {}
for i in range(columns):
    textbox = TextBox()

    # Here you can manipulate the textbox

    self.textbox_dict[i] = textbox

# Then reference each TextBox by column number
val = self.textbox_dict[0].Text

您還可以創建一個類函數來初始化表。 在這里,我還將顯示一個示例,該示例說明如何使用setattr動態創建TextBox對象變量名稱。

class MyClass:
    columns = 8
    self.init_table(columns)

    # Then you can reference the textbox by variable name
    val = self.textbox_0.Text

    def init_table(self, cols):
        for i in range(cols):
           setattr(self, "textbox_{}".format(i), TextBox())

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM