如何在填充整个单元格时左对齐Python tkinter网格列

2024-02-11

我正在尝试编写一个 python 类来以表格格式显示数据。我确信已经有一些课程可以做同样的事情,但是,我使用这个练习作为自学 Python 和 tkinter 的方法。在大多数情况下,我让类按照我想要的方式工作,但是我无法让标题和数据单元格填充整个单元格,同时左对齐。这是我的班级当前为表生成的内容:

我继续将单元格上的粘性更改为 (W,E) 而不仅仅是 W,以显示我希望表格的外观,除了每个单元格左对齐。以下是我拍摄的目的:

根据我所做的研究,我似乎需要使用weight的属性grid_columnconfigure and grid_rowconfigure,但是我尝试使用它们的各种方法都无法让它发挥作用。

这是我的类的代码(我使用的是 Python 3.4):

from tkinter import *
from tkinter import ttk
from tkinter import font

class TableData:

    def __init__(self,parent,attributes,columns,data):
        self.parent = parent
        self.tableName = StringVar()
        self.tableName.set(attributes['tableName'])
        self.columns = columns
        self.columnCount = 0
        self.borderColor = attributes['borderColor']
        self.titleBG = attributes['titleBG']
        self.titleFG = attributes['titleFG']
        self.titleFontSize = attributes['titleFontSize']
        self.headerBG = attributes['headerBG']
        self.headerFG = attributes['headerFG']
        self.headerFontSize = attributes['headerFontSize']
        self.dataRowColor1 = attributes['dataRowColor1']
        self.dataRowColor2 = attributes['dataRowColor2']
        self.dataRowFontSize = attributes['dataRowFontSize']
        self.dataRowFG = attributes['dataRowFG']
        self.data = data
        self.tableDataFrame = ttk.Frame(self.parent)
        self.tableDataFrame.grid(row=0,column=0)
        self.initUI()

    def countColumns(self):
        cnt = 0
        for i in self.columns:
            cnt += 1

        self.columnCount = cnt

    def buildTableTitle(self):
        tableTitleFont = font.Font(size=self.titleFontSize)
        Label(self.tableDataFrame,textvariable=self.tableName,bg=self.titleBG,fg=self.titleFG,font=tableTitleFont, highlightbackground=self.borderColor,highlightthickness=2).grid(row=0,columnspan=self.columnCount,sticky=(W,E), ipady=3)

    def buildHeaderRow(self):
        colCount = 0
        tableHeaderFont = font.Font(size=self.headerFontSize)
        for col in self.columns:
            Label(self.tableDataFrame,text=col,font=tableHeaderFont,bg=self.headerBG,fg=self.headerFG,highlightbackground=self.borderColor,highlightthickness=1).grid(row=1,column=colCount,sticky=W, ipady=2, ipadx=5)
            colCount += 1

    def buildDataRow(self):
        tableDataFont = font.Font(size=self.dataRowFontSize)
        rowCount = 2
        for row in self.data:
            if rowCount % 2 == 0:
                rowColor = self.dataRowColor2
            else:
                 rowColor = self.dataRowColor1
            colCount = 0
            for col in row:
                Label(self.tableDataFrame,text=col,bg=rowColor,fg=self.dataRowFG,font=tableDataFont,highlightbackground=self.borderColor,highlightthickness=1).grid(row=rowCount,column=colCount,sticky=W,ipady=1, ipadx=5)
                colCount += 1
            rowCount += 1

    def initUI(self):
        self.countColumns()
        self.buildTableTitle()
        self.buildHeaderRow()
        self.buildDataRow()

这是引用 TableData 类的测试文件:

from tkinter import *
from tkinter import ttk
from tableData import TableData
import sqlite3

root = Tk()
root.geometry('1000x400')

mainframe = ttk.Frame(root).grid(row=0,column=0)

attributes = {}
attributes['tableName'] = 'Title'
attributes['borderColor'] = 'black'
attributes['titleBG'] = '#1975D1'
attributes['titleFG'] = 'white'
attributes['titleFontSize'] = 16
attributes['headerBG'] = 'white'
attributes['headerFG'] = 'black'
attributes['headerFontSize'] = 12
attributes['dataRowColor1'] = 'white'
attributes['dataRowColor2'] = 'grey'
attributes['dataRowFontSize'] = 10
attributes['dataRowFG'] = 'black'

columns = ['Col 1', 'Column 2', 'Column 3','Column    4']

results = [('1','Key','Desc','Attribute'),('2','Key Column','Description Column','AttributeColumn')]

table = TableData(mainframe,attributes,columns,results)

root.mainloop()

预先感谢您的任何见解。如果还有其他有用的信息,请告诉我。


对于任何几何网格,添加选项sticky="W", 例如,

self.tableDataFrame.grid(sticky="W", row=0, column=0)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在填充整个单元格时左对齐Python tkinter网格列 的相关文章

  • Django 代理模型的继承和多态性

    我正在开发一个我没有启动的 Django 项目 我面临着一个问题遗产 我有一个大模型 在示例中简化 称为MyModel这应该代表不同种类的物品 的所有实例对象MyModel应该具有相同的字段 但方法的行为根据项目类型的不同而有很大差异 到目
  • Python 的键盘中断不会中止 Rust 函数 (PyO3)

    我有一个使用 PyO3 用 Rust 编写的 Python 库 它涉及一些昂贵的计算 单个函数调用最多需要 10 分钟 从 Python 调用时如何中止执行 Ctrl C 好像只有执行结束后才会处理 所以本质上没什么用 最小可重现示例 Ca
  • 如何在flask中使用g.user全局

    据我了解 Flask 中的 g 变量 它应该为我提供一个全局位置来存储数据 例如登录后保存当前用户 它是否正确 我希望我的导航在登录后在整个网站上显示我的用户名 我的观点包含 from Flask import g among other
  • Python(Selenium):如何通过登录重定向/组织登录登录网站

    我不是专业程序员 所以请原谅任何愚蠢的错误 我正在做一些研究 我正在尝试使用 Selenium 登录数据库来搜索大约 1000 个术语 我有两个问题 1 重定向到组织登录页面后如何使用 Selenium 登录 2 如何检索数据库 在我解决
  • 如何在 Python 中检索 for 循环中的剩余项目?

    我有一个简单的 for 循环迭代项目列表 在某些时候 我知道它会破裂 我该如何退回剩余的物品 for i in a b c d e f g try some func i except return remaining items if s
  • 是否可以忽略一行的pyright检查?

    我需要忽略一行的pyright 检查 有什么特别的评论吗 def create slog group SLogGroup data Optional dict None SLog insert one SLog group group da
  • 测试 python Counter 是否包含在另一个 Counter 中

    如何测试是否是pythonCounter https docs python org 2 library collections html collections Counter is 包含在另一个中使用以下定义 柜台a包含在计数器中b当且
  • 使用 Tkinter 显示 numpy 数组中的图像

    我对 Python 缺乏经验 第一次使用 Tkinter 制作一个 UI 显示我的数字分类程序与 mnist 数据集的结果 当图像来自 numpy 数组而不是我的 PC 上的文件路径时 我有一个关于在 Tkinter 中显示图像的问题 我为
  • Python pickle:腌制对象不等于源对象

    我认为这是预期的行为 但想检查一下 也许找出原因 因为我所做的研究结果是空白 我有一个函数可以提取数据 创建自定义类的新实例 然后将其附加到列表中 该类仅包含变量 然后 我使用协议 2 作为二进制文件将该列表腌制到文件中 稍后我重新运行脚本
  • 如何使用 OpencV 从 Firebase 读取图像?

    有没有使用 OpenCV 从 Firebase 读取图像的想法 或者我必须先下载图片 然后从本地文件夹执行 cv imread 功能 有什么办法我可以使用cv imread link of picture from firebase 您可以
  • IO 密集型任务中的 Python 多线程

    建议仅在 IO 密集型任务中使用 Python 多线程 因为 Python 有一个全局解释器锁 GIL 只允许一个线程持有 Python 解释器的控制权 然而 多线程对于 IO 密集型操作有意义吗 https stackoverflow c
  • python获取上传/下载速度

    我想在我的计算机上监控上传和下载速度 一个名为 conky 的程序已经在 conky conf 中执行了以下操作 Connection quality alignr wireless link qual perc wlan0 downspe
  • Pandas:merge_asof() 对多行求和/不重复

    我正在处理两个数据集 每个数据集具有不同的关联日期 我想合并它们 但因为日期不完全匹配 我相信merge asof 是最好的方法 然而 有两件事发生merge asof 不理想的 数字重复 数字丢失 以下代码是一个示例 df a pd Da
  • 向 Altair 图表添加背景实心填充

    I like Altair a lot for making graphs in Python As a tribute I wanted to regenerate the Economist graph s in Mistakes we
  • 每个 X 具有多个 Y 值的 Python 散点图

    我正在尝试使用 Python 创建一个散点图 其中包含两个 X 类别 cat1 cat2 每个类别都有多个 Y 值 如果每个 X 值的 Y 值的数量相同 我可以使用以下代码使其工作 import numpy as np import mat
  • 对年龄列进行分组/分类

    我有一个数据框说df有一个柱子 Ages gt gt gt df Age 0 22 1 38 2 26 3 35 4 35 5 1 6 54 我想对这个年龄段进行分组并创建一个像这样的新专栏 If age gt 0 age lt 2 the
  • 解释 Python 中的数字范围

    在 Pylons Web 应用程序中 我需要获取一个字符串 例如 关于如何做到这一点有什么建议吗 我是 Python 新手 我还没有找到任何可以帮助解决此类问题的东西 该列表将是 1 2 3 45 46 48 49 50 51 77 使用
  • 如何计算 pandas 数据帧上的连续有序值

    我试图从给定的数据帧中获取连续 0 值的最大计数 其中包含来自 pandas 数据帧的 id date value 列 如下所示 id date value 354 2019 03 01 0 354 2019 03 02 0 354 201
  • 使用其构造函数初始化 OrderedDict 以便保留初始数据的顺序的正确方法?

    初始化有序字典 OD 以使其保留初始数据的顺序的正确方法是什么 from collections import OrderedDict Obviously wrong because regular dict loses order d O
  • 如何使用 Pycharm 安装 tkinter? [复制]

    这个问题在这里已经有答案了 I used sudo apt get install python3 6 tk而且效果很好 如果我在终端中打开 python Tkinter 就可以工作 但我无法将其安装在我的 Pycharm 项目上 pip

随机推荐

  • ckeditor 未加载通过 ajax 调用生成的元素?

    我正在使用自定义表单并通过 ajax 调用生成表单元素 但 textarea 未使用 ckeditor 加载 这是我的代码 阿贾克斯代码 jQuery ajax type POST url reg arz ajax2 php data bo
  • 如果创建了大写字母,则 TextInput 值上的 toLowerCase 会创建重复文本

    这是一个有趣的 我创建了一个 TextInput 它接受一个值 然后将其小写 将其添加到状态 并将其设置为默认值 在我的 Android 物理设备上 如果您强制使用大写字母 自动大写设置为无 然后快速点击其他字母 它将复制并添加额外的文本
  • graphviz 中的自循环边缘太短且难看

    我用graphviz画了一张图 请参见FSM https i stack imgur com bsVUW png 我认为它很丑 因为自环边缘太短 边缘的属性 minlen 对我不起作用 我尝试了节点的几个端口 但除了我当前的实现之外 一切都
  • PLY - 返回多个令牌

    AFAIK 词法 Python 源代码的技术是 当当前行的缩进级别小于前一行的缩进级别时 产生 DEDENT 如果要关闭多个 INDENT 则生成多个 DEDENT 当到达输入末尾时 如果存在未闭合的 INDENT 则生成 DEDENT 现
  • 带有 codeigniter 的活动菜单选项卡

    Codeigniter中可以使用什么方法来实现活动菜单选项卡 例如我有一个用户菜单Profile Friends Messages Logout 当我在配置文件控制器中时 URL 是domain com profile some funct
  • JSF 的采用和普及

    只是一个一般性问题 欢迎讨论 到目前为止 我非常喜欢 JSF 我对它还很陌生 但我更喜欢它而不是 Struts 从专业人士的角度来看 您认为 JSF 的未来光明吗 作为一个年轻的程序员 值得投资学习 JSF 2 0 而不是 Struts 或
  • x86 OpCode 指令解码

    我一直在研究 x86 架构的软件开发人员手册 试图提高我的逆向工程技能 我知道该架构很复杂并且向后兼容前几代 随着新一代的出现 一些旧的文档部分被遗漏了 但令人不安的解释和误解之一是与此类似的说明 80 2 ib 因此 基于以下的说明80操
  • 使用 Stripe Firebase 扩展 Webhook 运行订阅付款未触发

    我添加了Stripe 订阅扩展 https firebase google com products extensions firestore stripe subscriptions到我的 Firebase Vue 应用程序 以便我可以为
  • Eclipse 将编译器合规性更新到 1.7

    我在更新 Eclipse 工作区的编译器合规性时遇到一些问题 我实际上使用的是 RTC 但它本质上是 Eclipse 目前 它使用 1 6 的 jdk 因此我可以将 JDK 合规性更改为 1 6 的限制 但是 我在我的项目中使用 jdk 1
  • 从一种安装切换到另一种安装时,Inno setup 会隐藏安装项目

    我应该需要你的帮助 我想知道 Inno 是否有可能为 2 个产品设置 2 个不同的安装掩码 通过从下拉列表中选择 我们将这两种不同的安装称为 SETUP 和 PROGRAM 安装 SETUP 时 我们应该可以选中 取消选中以下复选框 将安装
  • 如何从 Xamarin Forms 中的 Azure B2C 中删除缩放按钮

    我在我的 xamarin forms 应用程序中运行了 azure b2c 它运行良好 但 ui 自定义非常有限 我在登录页面 注册页面上遇到一个问题 忘记了密码 它的底部有一个缩放按钮 这很烦人 因为有时当我尝试按注册时 它会按缩放按钮
  • WooCommerce 中一件免费产品的数量折扣

    我想免费赠送三种产品 如果有人添加了更多数量的商品 我只想免费提供一个数量 这意味着从小计中扣除某一数量的价格 例如 一种产品的价格为 4 添加的总数量为 5 因此小计总计为 20 现在 我想从小计中扣除一个数量的价格 所以 扣除价格后 最
  • 偏移 iframe 内的网页位置

    我有一个 iframe 弹出窗口 应该加载表单 该表单是较大页面的一部分 包含一些输入字段 在这种情况下 加载它的 iframe 宽度限制为大约 1000 像素 充当不同页面的 窗口 有没有办法在加载内容时不对齐 iframe 而是对齐内容
  • C++ 标准中是否有任何计划来解决初始化列表构造函数的不一致问题?

    C 中的初始化列表构造函数经常会引起麻烦 例如 using std vector using std string vector
  • 如何使用 Vue.js 隐藏 div

    我希望能够使用 Vue 隐藏 div 对性能的影响尽可能小 因为网站上的几个 div 都会以这种方式处理 我该怎么做呢 隐藏 div gt 单击另一个 div 时显示它 示例 无 Vue https jsfiddle net 3v65gcg
  • Ag-grid:计算每个过滤器选择的行数

    在我的 ag grid 中我想显示行数在一组过滤器中的每个过滤器选择旁边 也许sort按该计数的选择 降序 默认情况下是这样的 我希望选项显示为 全选 88 凯蒂 泰勒 2 达伦 萨瑟兰 1 约翰 乔 内文 1 巴拉克奥巴马 0 考虑到其他
  • 如何设置IE文档模式?

    在 IE9 中我的浏览器已设置 F10 gt 工具 gt 兼容性视图设置 gt 添加 192 168 10 227 因此 当我尝试提供文件时 浏览器模式是9兼容视图 文档模式是IE7标准 我的问题是 如何将文档模式设置为IE9而不是IE7
  • 如何将“2011-01-12T14:17:55.043Z”这样的日期字符串转换为像 1294841716 这样的长字符串?

    我需要转换此字符串格式的日期 2011 01 12T14 17 55 043Z 到像 1294841716 这样的数字 这是自 1970 年 1 月 1 日以来的秒数 不是毫秒 有没有一种简单的方法来进行这种解析 Update 这是我到目前
  • 排序并删除一行中的重复单词

    The sort命令允许我按字母顺序排列行并删除重复的行 我需要类似的东西 可以对单行上的单词进行排序 将它们按顺序排列 并删除任何重复项 有这个命令吗 E g zebra ant spider spider ant zebra ant 更
  • 如何在填充整个单元格时左对齐Python tkinter网格列

    我正在尝试编写一个 python 类来以表格格式显示数据 我确信已经有一些课程可以做同样的事情 但是 我使用这个练习作为自学 Python 和 tkinter 的方法 在大多数情况下 我让类按照我想要的方式工作 但是我无法让标题和数据单元格