首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何更改ttk.Entry的一侧边框宽度?

如何更改ttk.Entry的一侧边框宽度?
EN

Stack Overflow用户
提问于 2021-04-14 09:39:26
回答 1查看 378关注 0票数 2

我试图用tkinter网格和ttk条目显示sudoku布局(也许,我没有使用正确的方法来实现它)。我想知道ttk条目的样式选项是否可以更改一侧的边界。我运用了这一职能:

代码语言:javascript
运行
复制
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)

它产生以下视图:

我只需要更改colum 3-4,6-7和第3-4行和6-7行共享的边框宽度,作为典型的sudoku样布局。如有任何建议,将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-14 11:21:09

正如我在前面的评论中所说的,我会使用一个堆叠的布局,框中的框和这些框中的条目。所以不需要特别的造型。访问ttk.Entries中的值会给出一个包含tk.StringVar对象的字典,键是大写字母‘A’.‘i’和数字‘1’.‘9’,就像在电子表格应用程序中那样:

代码语言:javascript
运行
复制
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下,如下所示:

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67089235

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档