如何仅更改 ttk.Entry 的一侧边框宽度?
How to change just one side border width of a ttk.Entry?
我正在尝试显示带有 tkinter 网格和 ttk 条目的数独布局(也许,我没有使用正确的方法来实现它)。我想知道 ttk 条目的样式选项是否有任何方法可以更改一侧的边框。我应用了这个功能:
def grid_layout(parent):
s = ttk.Style()
s.configure('border.TEntry',borderwidth=3)
for row in range(1,10):
for column in range(1,10):
entry = None
if column % 3 == 0 or row % 3 == 0:
entry = ttk.Entry(parent, width=3,justify='center'
,style='border.TEntry')
else:
entry = ttk.Entry(parent,width=3,justify='center')
entry.grid(column= column, row = row)
生成以下视图:
我只需要更改第 3-4、6-7 列以及第 3-4 和 6-7 行共享的边框宽度,作为典型的类数独布局。如有任何建议,我们将不胜感激。
如我之前的评论所述,我将使用堆叠式布局,框架中的框和这些框中的条目。所以不需要特别的造型。访问 ttk.Entries
中的值会给出一个包含 tk.StringVar
对象的字典,键是大写字母 'A'..'I' 与数字 '1'..'9 ' 就像在电子表格应用程序中一样:
import tkinter as tk
from tkinter import ttk
mainWin = tk.Tk()
mainWin.title('Sudoku solver')
mainFrame = ttk.Frame(mainWin, borderwidth=10)
mainFrame.grid(column=1, row=1)
# access to entries (of type tk.StringVar)
values = {}
for box_col in range(3):
for box_row in range(3):
box = ttk.Frame(mainFrame, borderwidth=1, relief='sunken')
box.grid(column=box_col+1, row=box_row+1)
for cell_col in range(3):
for cell_row in range(3):
v = tk.StringVar()
# build spreadsheet key from overall column and row
col = 'ABCDEFGHI'[3*box_col+cell_col]
row = '123456789'[3*box_row+cell_row]
key = col+row
values[key] = v
entry = ttk.Entry(box, width=3, justify='center', textvariable=v)
entry.grid(column=cell_col+1, row=cell_row+1)
# example for accessing the entries
values['A1'].set(1)
values['G3'].set(7)
values['E5'].set(int(values['A1'].get())+4)
values['I9'].set(int(values['E5'].get())+4)
mainWin.mainloop()
在 Windows 8.1 下,这将是这样的:
我正在尝试显示带有 tkinter 网格和 ttk 条目的数独布局(也许,我没有使用正确的方法来实现它)。我想知道 ttk 条目的样式选项是否有任何方法可以更改一侧的边框。我应用了这个功能:
def grid_layout(parent):
s = ttk.Style()
s.configure('border.TEntry',borderwidth=3)
for row in range(1,10):
for column in range(1,10):
entry = None
if column % 3 == 0 or row % 3 == 0:
entry = ttk.Entry(parent, width=3,justify='center'
,style='border.TEntry')
else:
entry = ttk.Entry(parent,width=3,justify='center')
entry.grid(column= column, row = row)
生成以下视图:
我只需要更改第 3-4、6-7 列以及第 3-4 和 6-7 行共享的边框宽度,作为典型的类数独布局。如有任何建议,我们将不胜感激。
如我之前的评论所述,我将使用堆叠式布局,框架中的框和这些框中的条目。所以不需要特别的造型。访问 ttk.Entries
中的值会给出一个包含 tk.StringVar
对象的字典,键是大写字母 'A'..'I' 与数字 '1'..'9 ' 就像在电子表格应用程序中一样:
import tkinter as tk
from tkinter import ttk
mainWin = tk.Tk()
mainWin.title('Sudoku solver')
mainFrame = ttk.Frame(mainWin, borderwidth=10)
mainFrame.grid(column=1, row=1)
# access to entries (of type tk.StringVar)
values = {}
for box_col in range(3):
for box_row in range(3):
box = ttk.Frame(mainFrame, borderwidth=1, relief='sunken')
box.grid(column=box_col+1, row=box_row+1)
for cell_col in range(3):
for cell_row in range(3):
v = tk.StringVar()
# build spreadsheet key from overall column and row
col = 'ABCDEFGHI'[3*box_col+cell_col]
row = '123456789'[3*box_row+cell_row]
key = col+row
values[key] = v
entry = ttk.Entry(box, width=3, justify='center', textvariable=v)
entry.grid(column=cell_col+1, row=cell_row+1)
# example for accessing the entries
values['A1'].set(1)
values['G3'].set(7)
values['E5'].set(int(values['A1'].get())+4)
values['I9'].set(int(values['E5'].get())+4)
mainWin.mainloop()
在 Windows 8.1 下,这将是这样的: