2014-01-23 2 views
0

제 프로그램에는 ttk.Scrollbar이 있고 읽기 전용 ttk.Entry 위젯과 함께 작동합니다. 내가 가지고있는 문제는 엔트리 위젯의 하단과 스크롤바 위젯의 상단 사이에 간격이 있다는 것입니다. 나는 그걸 없애고 싶지만 tkinter 네거티브 패딩 등을 사용할 수 없습니다.Python-tkinter는 스크롤바와 입력 위젯 사이의 공간을 제거합니다.

스크롤 막대는 자연스럽게 pady 속성을 배치하는 유일한 위젯입니다.

다음은 코드, 스크롤바 위젯 및 주석 처리 된 상대 항목 위젯입니다.

from tkinter import * 
from tkinter import ttk 

def calculate(*args): 
    try: 
     value = int(binary.get(), 2)  
     decimal.set(value) 
    except ValueError: 
     error = "Please enter a binary value." 
     decimal.set(error) 
     pass  

root = Tk()  #set object `root` to `Tk()` 
root.title("Binary to Decimal Converter") 
root.wm_iconbitmap("binaryicon.ico")  
root.grid_columnconfigure(0, weight = 1) 
root.resizable(False, False) 

mainframe = ttk.Frame(root, padding = "3 3 12 12") 
mainframe.grid(column = 0, row = 0, sticky = (N, W, E, S)) 
mainframe.columnconfigure(0, weight = 1) 
mainframe.rowconfigure(0, weight = 1) 

binary = StringVar()  
decimal = StringVar() 

binary_entry = ttk.Entry(mainframe, width = 32, textvariable = binary) 
binary_entry.grid(column = 2, row = 1, sticky = (W, E)) 

"""decimalView = ttk.Entry(mainframe, state = "readonly", background = "gray99", width = 32, textvariable = decimal) 
decimalView.grid(column = 2, row = 2, sticky = W) 
scrollbar = ttk.Scrollbar(mainframe, orient = HORIZONTAL, command = decimalView.xview) 
scrollbar.grid(column = 2, row = 3, sticky = (N, S, E, W)) 
decimalView.configure(xscrollcommand = scrollbar.set)""" 
ttk.Button(mainframe, text = "Calculate", command = calculate).grid(column = 3, row = 3, sticky = W) 

ttk.Label(mainframe, text = "Binary").grid(column = 3, row = 1, sticky = W) 
ttk.Label(mainframe, text = "Decimal").grid(column = 3, row = 2, sticky = W) 

binary_entry.focus() 
root.bind("<Return>", calculate) 

root.mainloop() 

답변

1

가장 간단한 해결책은 sticky=(N, E, W)입니다. 귀하의 코드는 현재 셀 위쪽과 아래쪽 모두에 붙어 있습니다 (모두 NS). 에테르 늘이기 또는 셀 중앙에 배치됩니다 (예 : Mac의 경우 스크롤 막대는 고정 크기이므로 스트레칭보다는 중심에 위치). 바로 위젯의 아래쪽에 "붙이기"를 원하기 때문에 자체 위젯의 하단에 "붙이기"를 원하지 않습니다.

+0

똑똑하고 매력적으로 일했습니다! – RoyalSwish

관련 문제