簡體   English   中英

動態創建小部件后,您可以對其進行配置嗎?

[英]Can you config a widget after it has been created dynamically?

所以我一直在尋找答案,但是找不到任何例子。

我想知道您是否可以在tkinter中使用相同的變量名創建多個按鈕或標簽或任何小部件,然后在創建后直接將其定位。

這是一些代碼示例,它將創建5個具有相同變量名的按鈕,如果您按下按鈕,它將在該按鈕上打印文本。

import tkinter as tk

btn_names = ["1st Button", "2nd Button", "3rd Button", "4th Button", "5th Button"]

class MyButton(tk.Frame):
    def __init__(self, parent, *args, **kwargs):
        tk.Frame.__init__(self, parent, *args, **kwargs)
        self.parent = parent
        self.createButtons()

    def createButtons(self):

        row_count = 0

        for n in range(5):
            someButton = tk.Button(self.parent, text=btn_names[n], command= lambda t=btn_names[n]: self.getText(t))
            someButton.grid(row = row_count, column = 0)
            row_count += 1

    def getText(self, text):
        print(text)


if __name__ == "__main__":
    root = tk.Tk()
    myApp = MyButton(root)


    root.mainloop()

現在我不知道的是是否也可以對上述按鈕進行更改。 就像我現在要更改按鈕的背景色和前景色一樣,但是我無法定位要編輯的按鈕。

我不能只是這樣做:

someButton.config(background = "black", foreground = "white")

因為所有按鈕都命名為someButton

因此,創建完該庄園中創建的小部件后,是否能夠對其進行編輯?

我不確定這是否是最好的方法,但是有可能。

與其在最初創建按鈕時將命令傳遞給按鈕,不如將一行配置命令的行添加到lambda函數,然后將someButton作為參數傳遞。 然后,在回調函數中,確保配置傳遞的按鈕以更改其背景顏色。

import tkinter as tk

btn_names = ["1st Button", "2nd Button", "3rd Button", "4th Button", "5th 
Button"]

class MyButton(tk.Frame):
    def __init__(self, parent, *args, **kwargs):
        tk.Frame.__init__(self, parent, *args, **kwargs)
        self.parent = parent
        self.createButtons()

    def createButtons(self):

        row_count = 0

        for n in range(5):
            someButton = tk.Button(self.parent, text=btn_names[n])
            someButton.configure(command=lambda t=btn_names[n], btn = someButton: self.getText(t, btn))
            someButton.grid(row = row_count, column = 0)
            row_count += 1

    def getText(self, text, btn):
        print(text)
        btn.configure(background = 'black')


if __name__ == "__main__":
    root = tk.Tk()
    myApp = MyButton(root)


    root.mainloop()

暫無
暫無

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

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