簡體   English   中英

Python 將作為參數給定的變量重新定義為 function

[英]Python Redefine the variable given as a parameter to the function

您好,我正在嘗試使用 tkinter 制作主題 window。 不同小部件的顏色有 5 個變量。 我將使用顏色對話框來選擇 colors 但我不想定義 5 個函數。 所以我想我可以制作 1 個 function 和哪個變量的 1 個參數來改變它的顏色。 我的代碼如下;

我的變量:

generalBgColor = '#454b4d'
generalFgColor = '#f2fdff'
generalBtnColor = '#0a5e7a'
mainLabelColor = '#ffffff'
highlightedLetterColor = '#ff0000'

調用pickColor function 的按鈕:

bgButton = tk.Button(themeWindow, text=' ', relief='ridge',
                         bg=generalBgColor, width=6, command=lambda: pickColor(generalBgColor))

fgButton = tk.Button(themeWindow, text=' ', relief='ridge',
                         bg=generalFgColor, width=6, command=lambda: pickColor(generalFgColor))

btnButton = tk.Button(themeWindow, text=' ', relief='ridge',
                          bg=generalBtnColor, width=6, command=lambda: pickColor(generalBtnColor))

mainlButton = tk.Button(themeWindow, text=' ', relief='ridge',
                            bg=mainLabelColor, width=6, command=lambda: pickColor(mainLabelColor))

letterButton = tk.Button(themeWindow, text=' ', relief='ridge',
                             bg=highlightedLetterColor, width=6,
                             command=lambda:pickColor(highlightedLetterColor))

這是我的 function:

def pickColor(variable):
        global generalBgColor, generalFgColor, generalBtnColor, mainLabelColor, highlightedLetterColor
        tempColor = askcolor(color=variable, title='Choose A Color')
        variable = tempColor[1]

沒有錯誤,但變量不會改變。 我知道這行不通,這就是我在這里尋求幫助的原因。

tkinter 原生支持帶有tk_setPalette的調色板。 請注意,名稱和值對僅適用於 tk.widgets,不支持 ttk.widgets。 此外,必須在創建任何其他小部件之前定義調色板,並且background選項是必須設置的位置參數。 根據文檔,當前支持以下選項:

> activeBackground
> foreground
> selectColor
> activeForeground  
> highlightBackground
> selectBackground
> background
> highlightColor    
> selectForeground
> disabledForeground    
> insertBackground  
> troughColor

下面的代碼中給出了一個最小的例子:

import tkinter as tk

root = tk.Tk()
root.tk_setPalette(background='#ff00f0',foreground='white')
tk.Label(root, text='test').pack()
root.mainloop()

或者你總是可以指定一個字典和喜歡

my_options = {'background':'#000000'}

並在構造函數中解壓縮這些,如tk.Label(root, **my_options)

暫無
暫無

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

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