2016-10-21 1 views
2

'기본'테마를 사용하는 동안 ttk.Checkbutton 객체의 텍스트를 클릭 할 때 나타나는 파선 테두리를 제거 할 수있는 방법이 있습니까?체크 박스를 선택한 후 나타나는 Python3 tkinter ttk.CheckButton 파선을 어떻게 제거합니까?

예.)

from tkinter import * 
from tkinter import ttk 
master = Tk() 
style = ttk.Style()   # print(self.style.theme_names()) 
style.theme_use('default') 
var = IntVar() 
c = ttk.Checkbutton(master, text="Click My Text", variable=var) 
c.pack() 
mainloop() 

되어 있지 않은 경우 표준 테마의 배경 버튼의 색상을 변경의 방법이 윈도우에서 실행하는 동안 사용?

OS: Windows 10 
Python: 3.5.1 
Frustration level: one bajillion 
+0

점선으로 된 개요는 용도를 제공합니다. 사용자가 어떤 버튼에 키보드 포커스가 있는지 알 수 있습니다. –

답변

3

은 어쩌면 내가 잘못 생각하지만,에 "급히"옵션이있을 것 같지 않습니다 (불행하게도이 프로젝트에 나는 다른 GUI 패키지를 사용하는 것이 좋습니다 수 없습니다). 그러나 여전히 몇 가지 옵션이 있습니다.

'takefocus'옵션을 False로 설정할 수 있습니다. 이렇게하면 점선으로 표시된 개요가 중지되지만 컨트롤간에 이동하는 기능도 제거됩니다.

c = ttk.Checkbutton(master, text="Click My Text", variable=var, takefocus=False) 

또 다른 옵션은 배경에 맞게 대시의 색상을 변경하는 것 : 작품의

style.configure('TCheckbutton', focuscolor=style.configure(".")["background"]) 

이런 종류의,하지만 항상 눈에 보이지 않는, 그래서 당신은 너무 강조 색으로 재생해야합니다 .

편집

의견 중 하나에 도움이 작은 예를 두드리는 동안, 나는이 작업을 수행하려면 약간 쉬운 방법을 발견했다. cget()을 사용하면 속성의 값을 얻을 수 있습니다. 이것은 스타일을 다루는 대신 사용할 수 있으며 읽고 이해하기가 더 쉽습니다. 상기 예 cget 사용

가된다 :

style.configure('TCheckbutton', focuscolor=master.cget("background")) 

이 단지 마스터 객체 (창)의 배경색과 동일한 초점 컬러를 설정한다. 요청으로

, 여기에 질문에서 원래의 코드를 기반으로 전체 예입니다

from tkinter import * 
from tkinter import ttk 
master = Tk() 
style = ttk.Style() 
style.theme_use('default') 

style.configure('TCheckbutton', focuscolor=master.cget("background")) 
style.configure('TCheckbutton', activebackground=master.cget("background")) 
style.configure('TCheckbutton', background=master.cget("background")) 

var = IntVar() 
c = ttk.Checkbutton(master, text="Click My Text", variable=var) 
c.pack() 
mainloop() 
여기

우리는 메인 윈도우 (마스터)의 배경과 같게 focuscolor, activebackground 및 배경 색상을 설정합니다. 이것은 점선 테두리를 제거하는 효과가 있습니다.

그러나 대시 테두리는 이유가 있습니다. 컨트롤에 포커스가있는 사용자를 보여줍니다. 창에 하나의 컨트롤이있을 때 약간 이상하게 보입니다. 그러나 사용자가 여러 명일 경우 사용자는 키보드를 사용하여 앱을 탐색하지 않고도 쉽게 탐색 할 수 있습니다.

+0

안녕하세요 앤드류, 작업 제안을받는 데 문제가있어 작업중인 버전을 표시 할 수있는 방법이 있습니까? 두 번째 코드는 검은 색에서 흰색으로 대시 색상을 변경하는 것으로 보이지만 레이블 요소의 배경색과 어떻게 일치 시킬지 모르겠습니다. 또한 "." 매개 변수는? –

+0

나는 내가 원하는 스타일을 갖기 위해 프로젝트를 진행할 수 있었지만 어떻게 작동하는지 잘 모르겠다. 위의 미니 예제에 개념을 적용하려고했지만 실패했습니다.Andrew의 답변을 활용하여 내가 찾던 결과를 얻을 수 있었다는 것을 감안할 때 나는 이것을 대답으로 표시하고 있지만, 누군가가 앞으로는이 문제로 어려움을 겪을 우리 '나'의 사람들에게 더 구체적인 예를 제공하기를 바랍니다. 앤드류에게 올바른 해결책을 제시해 주셔서 감사합니다. –

+2

자신의 코드를 기반으로 예제를 포함하도록 게시물을 편집했습니다. 이게 도움이 되길 바란다. @krazynhazy –