2012-09-14 2 views
4

파이썬 ttk GUI 생성은 쉽고 주로 네이티브 모양과 느낌 (win7)이 있습니다. 그래도 약간의 문제가 있습니다 :ttk : 프레임을 labelframe처럼 보이게 만드는 방법?

레이블이없는 ttk.LabelFrame처럼 보이는 프레임을 만들고 싶습니다. 텍스트 옵션을 생략하면 추한 차이가 남을 것입니다.

또한 ttk.Frame 테두리를 LabelFrame처럼 보이게 할 수 없습니다. 이 일을하는 우아한 방법이 있습니까? Bonus karma는 xp 이상의 모든/windows 버전에서 작동합니다.

스타일과 함께 작동하지만 스타일 LabelFrame 속성이 대부분 비어있는 것 같습니다 (style.element_options ("border.relief")). 어쩌면 내가 잘못된 장소에서보고있을 것입니다.

편집 :

TCL 버전 : 8.5.9

TkVersion : 8.5

output

갓 다운로드 파이썬 3.2.3와 WIN7에

try: # python 3 
    from tkinter import * # from ... import * is bad 
    from tkinter.ttk import * 
except: 
    from Tkinter import * 
    from ttk import * 

t = Tcl().eval 
print("tcl version: " + str(t("info patchlevel"))) 
print("TkVersion: " + str(TkVersion)) 

root = Tk() 

lF = LabelFrame(root, text=None) 
lF.grid() 
b = Button(lF, text='gonzo') 
b.grid() 

f = Frame(root, relief="groove") #GROOVE) 
f.grid() 
b2 = Button(f, text='gonzo') 
b2.grid() 

f2 = Frame(root, relief=GROOVE, borderwidth=2) 
f2.grid() 
b3 = Button(f2, text='gonzo') 
b3.grid() 

mainloop() 

출력 이 컴퓨터에도 Python 2.6.6이 설치되어 있습니다 (같은 문제). 각 설치는 올바른 tk/tcl을 사용하고있는 것 같습니다.

+0

내 Windows 7 컴퓨터에서 relief = 'groove'를 사용하도록 ttk.Frame을 설정하면 LabelFrame의 모양과 일치합니다. 이것은 당신을 위해 작동하지 않습니다? – Brandon

+0

그건 내가 시도한 첫 번째 것 중 하나지만 그것은 나를 위해 작동하지 않습니다. 이상한. – Gonzo

+1

흠, 릴리 = '그루브'옵션을 ttk.Frame과 함께 설정하는 것처럼 보였습니다. 윈도우 7 클래식에서 윈도우 7 테마를 사용했기 때문에 나를 위해 일했습니다. 기본 테마로 돌아 가면 같은 것을 보았습니다. 당신이 한 차이. – Brandon

답변

5

좋아, 틈이없는 LabelFrame을 얻는 한 가지 해결책은 텍스트 대신 빈 위젯을 사용하는 것입니다. 따라서 예제의 첫 번째 부분을 조금 수정하십시오 :

# don't do the 'from tkinter import *' thing to avoid namespace clashes 
import tkinter # assuming Python 3 for simplicity's sake 
import tkinter.ttk as ttk 

root = tkinter.Tk() 

f = tkinter.Frame(relief='flat') 
lF = ttk.LabelFrame(root, labelwidget=f, borderwidth=4) 
lF.grid() 
b = ttk.Button(lF, text='gonzo') 
b.grid() 

root.mainloop() 

일반 Win7 테마로 저에게 적합합니다.

관련 문제