2014-01-23 57 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

相关问题