如何让tkinter中的Treeview显示NULL为空而不是“none”

1 投票
1 回答
51 浏览
提问于 2025-04-14 17:40

我正在从数据库中提取数据,并把它放到一个树形视图里。不过,这个树形视图把空值显示成了“none”,而不是留空。当我查看数据库时,空值是空白的(背景是非常浅的灰色)。我使用的数据库是SQLite3。我在VS Code里用Gitbash终端。这个问题是,我用Docxtemplate.render函数把数据填充到一个Word文凭模板里,但如果学生没有专业,系统就会在专业字段里填上“none”。我只希望它能留空。下面是生成函数的代码。“diploma”是我为Docxtemplate实例化的类定义的变量。顺便说一下,我知道有更好的方法来处理这个问题,而不是使用全局变量,然后再把它们放到字典里。我会在之后解决这个问题。

def generate():
    global studentid
    global fullName
    global degreeType
    global major1
    global concentration
    global gradDate
    global honors

    studentid = student_id_entry.get()
    fullName = full_name_entry.get()
    degreeType = degree_1_entry.get()
    major1 = major_1_entry.get()
    concentration = concentration_entry.get()
    gradDate = grad_date_entry.get()
    honors=honor_1_entry.get()

    diploma.render({
        "fullName" : fullName,
        "degreeType" : degreeType,
        "major": major1,
        "concentration": concentration,
        "honors": honors,
        "graduationDate" : gradDate
        })
    diploma.save(f"{studentid} {fullName} {degreeType} {major1}.docx") #composite primay key

    messagebox.showinfo("Success!", "The students diploma has been created!")

这是创建树形视图的代码:

# Create The Treeview
my_tree = ttk.Treeview(tree_frame, yscrollcommand=tree_scroll.set, 
    xscrollcommand=tree_scroll_bottom.set, selectmode="extended", show="headings")
    my_tree.pack()

这是填充树形视图的函数:

def query_database():
    # Clear the Treeview
    for record in my_tree.get_children():
        my_tree.delete(record)
        
    # Create a database or connect to one that exists
    conn = sqlite3.connect(db)

    # Create a cursor instance
    c = conn.cursor()

    c.execute("SELECT rowid, * FROM graduates")
    records = c.fetchall()
    
    # Add our data to the screen
    global count
    count = 0
    
    #for record in records:
    #   print(record)

    for record in records:
        if count % 2 == 0:
            my_tree.insert(
                parent='', index='end', iid=count, text='', values=( record[1], record[2],
                record[3], record[4], record[5], record[6], record[7], record[8], record[9],
                record[10], record[11], record[12]), tags=('evenrow',))
        else:
            my_tree.insert(parent='', index='end', iid=count, text='', values=( record[1], record[2], record[3], record[4], record[5], record[6], record[7], record[8], record[9], record[10], record[11], record[12]), tags=('oddrow',))
        # increment counter
        count += 1


    # Commit changes
    conn.commit()

    # Close our connection
    conn.close()

任何帮助都将非常感谢。

1 个回答

0

要把评论变成一个真正的答案:

简单来说,你可以在设置concentration的值时加个条件,这样就可以把值"none"变成一个空字符串""

concentration = concentration_entry.get() if concentration_entry.get() != "none" else ""

撰写回答