기본 팔레트 색상과 사용자 정의 색상 모두에서 Tcl/Tk를 사용하는 데 문제가 있습니다.팔레트의 배경을 설정 해제 하시겠습니까?
특정 상황에서 배경색을 설정하고 (예 : 사용자 입력이 누락되었음을 나타냄) 기본 배경색으로 되돌아 가고 싶습니다 (특정 상황이 해결되면) .
지금까지 나는 위젯에 -background
옵션을 사용 해왔다. 예.
$ wish
# ALERT: turn the background to pink
. configure -background pink
# SNAFU: turn the background back to white
. configure -background white
하지만, 난 그냥 내 응용 프로그램의 글로벌 팔레트를 설정할 수있는 tk_setPalette
을 발견했다. 불행히도 두 가지가 잘 어울리지 않는 것 같습니다. 일단 내가 명시 적으로 위젯의 배경색을 설정했으면 의 설정을 해제했습니다. (현재 팔레트에서 설정된 기본 색상으로 되돌아갑니다.) :
$ wish
# cheesy color-scheme
tk_setPalette brown
# ALERT: turn the background to pink
. configure -background pink
# SNAFU: turn the background back to "normal"
. configure -background white
# hmpf, no not "white"; the current palette is 'brown'
. configure -background brown
하나 개의 솔루션 (I 피하고자하는) 변수에 팔레트를 저장하고, 그 명시 적 배경 설정하는 데 사용하는 것입니다 그러나
$ wish
# cheesy color-scheme
set mypalette brown
tk_setPalette $mypalette
# ALERT: turn the background to pink
. configure -background pink
# SNAFU: turn the background back to "normal"
. configure -background $mypalette
을이 가지고 다양한 단점 : - 팔레트 변경 사항을 추적해야합니다. 내 응용 프로그램에 appens합니다 (내 응용 프로그램에 skinning에 사용할 수있는 "플러그인"시스템이 있으므로 잠재적으로 수행하기가 어렵습니다) - 이것은 background
에서만 작동하지만 색상 팔레트를 설정하면 배경색보다 더 많은 색상이 변경됩니다 .
Esp. 두 번째 단점은 실질적인 문제입니다. 현재 내 위젯 중 하나는 기본 배경으로 white
, pink
을 경고 색상으로, default
텍스트 색상으로 사용하는 텍스트 entry
입니다. white
이외의 색 구성표로 변경할 때마다 기본 텍스트 색이 white
이되어 배경이 보이지 않게됩니다 (배경이 default
이 아니기 때문에 white
이기 때문에).
은 어떻게
palette
에서 제공하는 기본값으로 색상을 복원 할 수 있습니다?palette
에서 주어진 요소의 기본 색을 어떻게 쿼리 할 수 있습니까?