python - 如何使用 Tkinter 根据数据库查询动态标记我的按钮

标签 python mysql tkinter

我正在尝试根据数据库结果动态标记我的按钮。所以在这种情况下,按钮将被标记为“23”

数据库

|编号 |数|

| 1 | 23

from tkinter import *
import pymysql as mdb

from tkinter import ttk


#functions
def functionHolder():
    print("do nothing function holder")


root = Tk()
dbi = mdb.connect("localhost",port=3306, user="access", passwd="***", db="index_db" )
cursor = dbi.cursor()

cursor.execute("""SELECT number FROM caution_elements WHERE id = 1 """)
dbi.commit()
data = cursor.fetchone()[0]
dbi.close()

result =str("%s " % data)



 varButt = Button(root,textvariable=data, command=functionHolder)
 varButt.pack()

 root.mainloop()

按钮应该被标记为 [23] 我目前得到一个空白按钮并且没有错误

最佳答案

tkinter 小部件的 textvariable 选项需要特殊的变量类,例如 StringVarBooleanVarIntVar。可以使用 get 方法访问它们的值,并且可以使用 set 更改它们的值,如下所示:

import tkinter as tk

root = tk.Tk()

data = tk.StringVar()
data.set("This")

def change():
    if data.get() == "This":
        data.set("That")
    else:
        data.set("This")

tk.Label(root, textvariable=data).pack()
tk.Button(root, text="Change", command=change).pack()

root.mainloop()

如果你是not sure about using class variables没有它们的另一个例子是:

import tkinter as tk

root = tk.Tk()

data = "This"

def change():
    global data
    if data == "This":
        data = "That"
        a_label['text'] = data
    else:
        data = "This"
        a_label.config(text=data)


a_label = tk.Label(root, text=data)
a_label.pack()
tk.Button(root, text="Change", command=change).pack()

root.mainloop()

两个代码片段做同样的事情,除了当你改变 data 的值时,在第一个例子中你也改变了标签显示的文本,而在第二个例子中你需要显式更新 a_label 的文本选项。


另请注意,您可以使用 a_widget.config(option=value)a_widget.configure(option=value)a_widget['option'] = value 可互换,因为您正在修改只有一个选项。

关于python - 如何使用 Tkinter 根据数据库查询动态标记我的按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47665365/

相关文章:

python - Powershell执行python : redirect print statements only?

php - 从 PHP 脚本中执行 MySQL 脚本?

php - 使用 php、mysql 和 jQuery 实现自动完成

python - Tkinter 从函数中获取按键事件

python - 组织一个大型 python 脚本

python - pyjnius 导入错误?运行 kivy 的示例 android 程序期间的问题

python - 从嵌套列表中获取不同的列表

php - 如何通过更新来增值?

python turtle 图形窗口无法打开

python - Tkinter 使文本随时间变化