如何在 tkinter 的画布上添加标签小部件?

阿迪亚·博盖特

所以我有这段代码,它从数据库中提取新值并不断更新应用程序。它的问题是我需要以某种吸引人的方式显示这些值,而我需要画布而我无法这样做。画布不起作用。它没有在应用程序中制作任何形状。我确定我犯了一个错误,但我不知道是什么。帮帮我谢谢。

代码:

import Tkinter as tk
import sqlite3
import string
import time
import sys
from constants import DELAY,DB_PATH

def update_data_for_cod_bod():

    conn = sqlite3.connect('ubiqx_db.db')
    c = conn.cursor()
    execute_query = c.execute('''select cod,bod,tss from front_end_data 
    where slave_id=1''')
    result_set = c.fetchall()
    data_for_cod = 0
    data_for_bod = 0
    data_for_tss = 0
    for row in result_set:
        data_for_cod = row[0]
        data_for_bod = row[1]
        data_for_tss = row[2]

    lbl_cod_data["text"] = "COD             "+str(data_for_cod)
    lbl_bod_data["text"] = "BOD             " + str(data_for_bod)
    lbl_tss_data["text"] = "TSS             " + str(data_for_tss)
    root.after(DELAY, update_data_for_cod_bod)  # Call this function again 
    after DELAY ms.

def exit(event):
    root.quit()

root = tk.Tk()
w, h = root.winfo_screenwidth(), root.winfo_screenheight()
root.overrideredirect(1)
root.geometry("%dx%d+0+0" % (h, w))

root.title("COD_BOD")
root.configure(background='black')
root.bind("<Escape>", exit)

canvas = tk.Canvas(root, width=h, height=w, highlightthickness=0)
canvas.grid(row=0,column=0)
blackline = canvas.create_line(100, 100, 800, 100, fill="yellow")


lbl_cod_data = tk.Label(canvas, text="", font=("Times New Roman", 50, 
"bold"), bg="black", fg="white")
lbl_cod_data.grid(row=0,column=0)
lbl_bod_data = tk.Label(canvas, text="", font=("Times New Roman", 50, 
"bold"), bg="black", fg="white")
lbl_bod_data.grid(row=1,column=0)
lbl_tss_data = tk.Label(canvas, text="", font=("Times New Roman", 50, 
"bold"), bg="black", fg="white")
lbl_tss_data.grid(row=2,column=0)

update_data_for_cod_bod()  # Starts periodic calling of itself.
root.mainloop()
acw1668

实际上,您的代码正在运行,但是canvas被覆盖在顶部lbl_cod_data,因此您看不到它。尝试将所有内容更改.grid(...).place(...)如下所示:

canvas.place(x=0, y=0)
lbl_cod_data.place(x=50, y=100)
lbl_bod_data.place(x=50, y=200)
lbl_tss_data.place(x=50, y=300)

然后你可以一起看到标签和画布。

但是,在画布上使用标签小部件并不是一个好的设计(例如标签小部件不能具有透明背景)。

建议改用画布文本。以下是基于您的修改后的代码作为示例:

import Tkinter as tk
import sqlite3
from constants import DELAY,DB_PATH

def update_data_for_cod_bod():
    conn = sqlite3.connect('ubiqx_db.db')
    c = conn.cursor()
    execute_query = c.execute('''select cod,bod,tss from front_end_data where slave_id=1''')
    result_set = c.fetchall()

    data_for_cod = 0
    data_for_bod = 0
    data_for_tss = 0
    for row in result_set:
        data_for_cod = row[0] # do you actually want += instead?
        data_for_bod = row[1]
        data_for_tss = row[2]
    # use itemconfig() to modify the labels text
    canvas.itemconfig(lbl_cod_data, text="COD             "+str(data_for_cod))
    canvas.itemconfig(lbl_bod_data, text="BOD             "+str(data_for_bod))
    canvas.itemconfig(lbl_tss_data, text="TSS             "+str(data_for_tss))
    root.after(DELAY, update_data_for_cod_bod)  # Call this function again after DELAY ms.

root = tk.Tk()
w, h = root.winfo_screenwidth(), root.winfo_screenheight()
root.overrideredirect(1)
root.geometry("%dx%d+0+0" % (w, h)) # (h, w) in your original code
root.title("COD_BOD")
root.configure(background='black')
root.bind("<Escape>", lambda e: root.quit())

# width=h and height=w in your original code
canvas = tk.Canvas(root, width=w, height=h, highlightthickness=0, bg="dark blue")
canvas.pack()

blackline = canvas.create_line(100, 100, 800, 100, fill="yellow")

lbl_font = ("Times New Roman", 50, "bold")
lbl_cod_data = canvas.create_text(100, 100, text="COD", font=lbl_font, anchor='nw', fill="white")
lbl_bod_data = canvas.create_text(100, 180, text="BOD", font=lbl_font, anchor='nw', fill="green")
lbl_tss_data = canvas.create_text(100, 260, text="TSS", font=lbl_font, anchor='nw', fill="yellow")

update_data_for_cod_bod()  # Starts periodic calling of itself.
root.mainloop()

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在flutter的列小部件内添加标签

来自分类Dev

如何在 tkinter 上创建后退按钮/或删除画布上的所有小部件?

来自分类Dev

如何使用tkinter画布小部件制作按钮?

来自分类Dev

Tkinter-如何隐藏画布上的标签?

来自分类Dev

python tkinter如何更改特定网格空间上的小部件的标签?

来自分类Dev

如何在Tkinter画布上更新情节?

来自分类Dev

如何在Tkinter画布上更新情节?

来自分类Dev

Tkinter:如何将文本小部件嵌入画布小部件

来自分类Dev

如何在Python Tkinter GUI的“标签”小部件中显示更新的值?

来自分类Dev

如何在Tkinter的框架顶部保留标签小部件(页面标题)

来自分类Dev

如何在Tkinter的框架顶部保留标签小部件(页面标题)

来自分类Dev

Python:如何在标签小部件(tkinter)中动态显示图像

来自分类Dev

如何在第 1 类中更改第 2 类(Tkinter)中的小部件(标签)的属性?

来自分类Dev

如何居中Tkinter小部件?

来自分类Dev

如何在tkinter按钮小部件上控制图像和文本之间的空间?

来自分类Dev

如何在python tkinter中重叠窗口小部件/框架?

来自分类Dev

如何在Tkinter文本小部件中创建“加载轮”?

来自分类Dev

如何在Tkinter中垂直居中小部件?

来自分类Dev

如何在tkinter.Text小部件中显示行号?

来自分类Dev

如何在python类中引用Tkinter小部件

来自分类Dev

如何在粘性框架中将Tkinter小部件居中

来自分类Dev

如何在Tkinter中显示/隐藏小部件?

来自分类Dev

Python Tkinter-如何在Canvas中包含小部件?

来自分类Dev

如何在Tkinter中垂直居中小部件?

来自分类Dev

如何在python类中引用Tkinter小部件

来自分类Dev

如何在Tkinter文本小部件中创建“加载轮”?

来自分类Dev

如何在tkinter中的输入小部件中输出结果

来自分类Dev

Tkinter添加标签框架

来自分类Dev

Tkinter添加标签框架

Related 相关文章

  1. 1

    如何在flutter的列小部件内添加标签

  2. 2

    如何在 tkinter 上创建后退按钮/或删除画布上的所有小部件?

  3. 3

    如何使用tkinter画布小部件制作按钮?

  4. 4

    Tkinter-如何隐藏画布上的标签?

  5. 5

    python tkinter如何更改特定网格空间上的小部件的标签?

  6. 6

    如何在Tkinter画布上更新情节?

  7. 7

    如何在Tkinter画布上更新情节?

  8. 8

    Tkinter:如何将文本小部件嵌入画布小部件

  9. 9

    如何在Python Tkinter GUI的“标签”小部件中显示更新的值?

  10. 10

    如何在Tkinter的框架顶部保留标签小部件(页面标题)

  11. 11

    如何在Tkinter的框架顶部保留标签小部件(页面标题)

  12. 12

    Python:如何在标签小部件(tkinter)中动态显示图像

  13. 13

    如何在第 1 类中更改第 2 类(Tkinter)中的小部件(标签)的属性?

  14. 14

    如何居中Tkinter小部件?

  15. 15

    如何在tkinter按钮小部件上控制图像和文本之间的空间?

  16. 16

    如何在python tkinter中重叠窗口小部件/框架?

  17. 17

    如何在Tkinter文本小部件中创建“加载轮”?

  18. 18

    如何在Tkinter中垂直居中小部件?

  19. 19

    如何在tkinter.Text小部件中显示行号?

  20. 20

    如何在python类中引用Tkinter小部件

  21. 21

    如何在粘性框架中将Tkinter小部件居中

  22. 22

    如何在Tkinter中显示/隐藏小部件?

  23. 23

    Python Tkinter-如何在Canvas中包含小部件?

  24. 24

    如何在Tkinter中垂直居中小部件?

  25. 25

    如何在python类中引用Tkinter小部件

  26. 26

    如何在Tkinter文本小部件中创建“加载轮”?

  27. 27

    如何在tkinter中的输入小部件中输出结果

  28. 28

    Tkinter添加标签框架

  29. 29

    Tkinter添加标签框架

热门标签

归档