簡體   English   中英

嘗試從Tkinter中的同一功能創建和配置多個按鈕

[英]Trying to create and configure multiple buttons from the same function in tkinter

所以我試圖創建一個代碼,當單擊每個按鈕時,它將使該按鈕適合某種樣式,但名稱有所更改,但是我當前的代碼將替換您單擊的按鈕,而當您單擊另一個按鈕時,它們將被禁用無論如何,您最后一次永久單擊的按鈕是否存在,以使這些按鈕都使用相同的功能,但是在激活另一個按鈕時不會被禁用?

from tkinter import *
MainWindow = Tk()
def SquadInfoBttnFull():
    global SquadFullBttn
    SquadFullBttn = Toplevel(MainWindow)
    SquadFullBttn.geometry("658x600")
# -- unit buttons -- #
    for i in range(10):
        Unit_Button = Button(SquadFullBttn, text="EMPTY", width=8, height=6)
        Unit_Button.grid(row = 0, column = i)
        Unit_Button.bind("<Button-1>", UnitFill)

def SquadInfoBttn(): 
    InfoBttn = Button(MainWindow, wraplength=50, justify=LEFT, text="SquadInfo Here", width=100, command=SquadInfoBttnFull) 
    InfoBttn.grid(row=0, column=0, sticky=W)

def UnitInfoBttn():
    UnitInfo = Toplevel(SquadFullBttn)
    UnitInfo.geometry("300x200")

def UnitFill(event):
    global photo
    photo = PhotoImage(file="csmSingle.png")
    btn = event.widget
    grid_info = event.widget.grid_info()
    btn = Button(SquadFullBttn, text="UNIT", image=photo, width=58, height=93, command=UnitInfoBttn, compound = TOP)
    btn.grid(row=grid_info["row"], column=grid_info["column"], sticky=E)

SquadInfoBttn()
MainWindow.mainloop()

您試圖更改現有按鈕,而不創建按鈕。 另外,您不需要每次都創建一個新的PhotoImage實例。 以下代碼對我有用:

from tkinter import *

MainWindow = Tk()

photo = PhotoImage(file="csmSingle.png")

def SquadInfoBttnFull():
    global SquadFullBttn
    SquadFullBttn = Toplevel(MainWindow)
    SquadFullBttn.geometry("658x600")
# -- unit buttons -- #
    for i in range(10):
        Unit_Button = Button(SquadFullBttn, text="EMPTY", width=8, height=6)
        Unit_Button.grid(row = 0, column = i)
        Unit_Button.bind("<Button-1>", UnitFill)

def SquadInfoBttn(): 
    InfoBttn = Button(MainWindow, wraplength=50, justify=LEFT, text="SquadInfo Here", width=100, command=SquadInfoBttnFull) 
    InfoBttn.grid(row=0, column=0, sticky=W)

def UnitInfoBttn():
    UnitInfo = Toplevel(SquadFullBttn)
    UnitInfo.geometry("300x200")

def UnitFill(event):
    btn = event.widget
    grid_info = event.widget.grid_info()
    btn.config(text="UNIT", image=photo, width=58, height=93, command=UnitInfoBttn, compound = TOP)
    btn.grid(row=grid_info["row"], column=grid_info["column"], sticky=E)

SquadInfoBttn()
MainWindow.mainloop()

暫無
暫無

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

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