Tkinter文本小部件组织插入的文本

时间:2014-08-26 11:35:57

标签: python tkinter

我遇到了插入Tkinter Text Widget的文本的问题。插入文本后看起来不太清晰(它的统计数据来自PostgreSQL)。

public    AO_21D670_WHITELIST_RULES  5  |1 |0.16666666666666666667
public    AO_4AEACD_WEBHOOK_DAO  8  |0 |0E-20
public    AO_563AEE_ACTIVITY_ENTITY  8  |0 |0E-20
public    AO_563AEE_ACTOR_ENTITY  3  |0 |0E-20
public    AO_563AEE_MEDIA_LINK_ENTITY  3  |0 |0E-20
public    AO_563AEE_OBJECT_ENTITY  4  |0 |0E-20
public    AO_563AEE_TARGET_ENTITY  4  |0 |0E-20
public    AO_B9A0F0_APPLIED_TEMPLATE  5  |1 |0.16666666666666666667

是否可以编辑Text Widget的首选项以按Tab或其他顺序设置它?在我的代码中,我尝试仅在数据库中下载的数据之间设置TAB,但插入的文本如上所示。下面是我的代码将数据插入Text Widget:

conn = psycopg2.connect(database=baza, host=host, port=port, user=user, password=password)
    cur = conn.cursor()
    cur.execute("""SELECT datname, numbackends, blks_hit, tup_inserted, tup_updated, tup_deleted, deadlocks, stats_reset
                    FROM pg_stat_database
                    WHERE datname='postgres' """)
    if (bool(cur.rowcount) == True):
        statTextField.insert(INSERT, "pg_stat_database\nDATNAME   NUMBACKENDS    BLKS_HIT    TUP_INSERTED     TUP_UPDATED     TUP_DELETED     DEADLOCKS               STATS_RESET\n")
        for row in cur.fetchall():
            statTextField.insert(INSERT,("%s       %s          %s           %s             %s              %s           %s         %s\n" % (row[0],row[1],row[2],row[3],row[4],row[5],row[6],row[7])))

我的目标是使插入的文本看起来像这样:

public    AO_21D670_WHITELIST_RULES     5  |1 |0.16666666666666666667
public    AO_4AEACD_WEBHOOK_DAO         8  |0 |0E-20
public    AO_563AEE_ACTIVITY_ENTITY     8  |0 |0E-20
public    AO_563AEE_ACTOR_ENTITY        3  |0 |0E-20
public    AO_563AEE_MEDIA_LINK_ENTITY   3  |0 |0E-20
public    AO_563AEE_OBJECT_ENTITY       4  |0 |0E-20
public    AO_563AEE_TARGET_ENTITY       4  |0 |0E-20
public    AO_B9A0F0_APPLIED_TEMPLATE    5  |1 |0.16666666666666666667

P.S。我对Python有点新鲜,很抱歉,如果问题太微不足道了。

1 个答案:

答案 0 :(得分:0)

尝试使用.format()方法。

>>> row
[0, 1, 2, 3, 4, 5, 6, 7]
>>> print("{0:10}{1:30}{2:4}{3:4}{4:4}{5:4}{6:4}{7:4}".format(row[0],row[1],row[2],row[3],row[4],row[5],row[6],row[7])))

其中第一个num inside {}是参数个数,第二个num是空间长度

输出:

         0                             1   2   3   4   5   6   7