Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在填充整个单元格时左对齐Python tkinter网格列_Python_Python 3.x_Tkinter_Grid - Fatal编程技术网

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

如何在填充整个单元格时左对齐Python tkinter网格列,python,python-3.x,tkinter,grid,Python,Python 3.x,Tkinter,Grid,我正试图编写一个python类以表格格式显示数据。我确信已经有一些类在做同样的事情,但是,我用这个练习来自学Python和tkinter。在大多数情况下,我让类按照我希望的方式工作,但是我无法让标题和数据单元格填充整个单元格,而将其向左对齐。下面是我的类当前为表生成的内容: 我继续将单元格上的粘性更改为(W,E),而不仅仅是W,以显示我希望表格的外观,除了每个单元格保持对齐。以下是我拍摄的目的: 根据我所做的研究,似乎我需要使用grid\u column configure和grid\u r

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

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

根据我所做的研究,似乎我需要使用
grid\u column configure
grid\u row configure
weight
属性,但是我尝试过的每一种方法都无法使其发挥作用

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

以下是引用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()

提前感谢您提供的任何见解。请告诉我是否有其他有用的信息。

尝试设置网格时的
列span
属性:

self.tableDataFrame.grid(row=0, column=0, columnspan=2)

2的大小可能不正确,请尝试,直到获得所需的大小。

如果希望标签中的文本左对齐,请使用定位选项。它采用表示指南针上一个点的字符串(例如:“w”=“west”,表示文本定位在左侧):


对于任何几何图形网格,添加选项
sticky=“W”
,例如

self.tableDataFrame.grid(sticky="W", row=0, column=0)

您没有定义标签的宽度,因此tkinter将标签的宽度设置为文本的宽度。这就是为什么标签不会占据单元格的整个宽度。要使它们占据所有可用宽度,请使用stickey=E+W

    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+E, ipady=2, ipadx=5)

我要添加的一件事是,这个类将用于动态创建表。一旦使用,它将是查询的结果集,而不是像我在测试文件中那样向类发送硬编码数据集。因此,我无法对列的宽度或权重进行硬编码。当我运行代码时,我收到此错误:
UnboundLocalError:赋值前引用的局部变量“rowCount”
。您可能希望先解决此问题,然后更新您的问题。无论如何,拉伸列和行的解决方案实际上是将列和/或行的
weight
属性设置为
1
。我会帮你的,但你需要先给我们一个可运行的程序…@Xenomorph,非常感谢你花时间看这个。我已经添加了rowCount声明,程序现在运行成功。如果你还需要我帮忙,请告诉我。非常感谢。FWIW,
weight
选项只影响为行或列提供多少额外空间。它不会以任何方式影响窗口小部件在其单元格中的对齐。@BryanOakley,你知道我缺少了什么,以便使单元格填充整个列,而不使其居中对齐吗?
self.tableDataFrame.grid(sticky="W", row=0, column=0)
    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+E, ipady=2, ipadx=5)