Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.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_Tkinter - Fatal编程技术网

Python tkinter程序调用创建按钮

Python tkinter程序调用创建按钮,python,tkinter,Python,Tkinter,您好,我正在尝试使用tkinter创建GUI,但我无法通过编程使按钮正确显示和/或行为 这是我用来根据dict创建按钮的代码: from tkinter import * import sqlite3 from functools import partial def query(x): conn = sqlite3.connect("_db") cur = conn.cursor() q = cur.execute("SELECT text, option1, op

您好,我正在尝试使用tkinter创建GUI,但我无法通过编程使按钮正确显示和/或行为

这是我用来根据dict创建按钮的代码:

from tkinter import *
import sqlite3
from functools import partial


def query(x):
    conn = sqlite3.connect("_db")
    cur = conn.cursor()
    q = cur.execute("SELECT text, option1, option2, option3 FROM tbl_1 WHERE id=?", [x, ])
    actions = q.fetchone()
    return actions


def pkey(identifier, label):
    q = query(identifier)
    buttons = {}
    text = q[0]
    label.config(text=text)
    for entry in q:
        if entry != text and entry is not None:
            buttons[int(entry[0])] = entry[3:]
            new_button = Button(root)
        for k, v in buttons.items():
            new_button.config(text=v, command=partial(pkey, k, label))
            new_button.pack(fill=X)
    print(buttons)
    lbl.pack()


root = Tk()
root.geometry("300x200")
text_frame = LabelFrame(root, bg="#A66D4F")
text_frame.pack(fill=BOTH, expand=Y)
options_frame = LabelFrame(root, bg="cyan").pack(fill=X)
lbl = Label(text_frame)
pkey(1, lbl)
root.mainloop()
这将在一个框架内创建按钮,但当我单击其中一个按钮时,它们将替换现有按钮,我得到的只是现有按钮顶部的按钮实例。从3个按钮变为6个按钮

有没有办法在单击后用新的按钮替换现有的按钮实例


谢谢你的回复。你说得对,我错过了一次机会。 我已经用下面的代码更新了代码,现在可以正常工作了

def destroy(frame, key, label):
    frame.destroy()
    frame = LabelFrame(self.parent, bg="cyan")
    frame.pack(fill=X)
    option_buttons(frame, key, label)

再次感谢

请考虑添加代码示例,或者修改您在这个问题中发布的代码示例。目前,它的格式和范围使我们很难帮助您;这是一个让你开始学习的方法。祝你的代码好运!请出示你的密码。我们无法诊断看不到的代码。如果你的代码只是简单地把新的按钮放在上面,那么很明显,你并没有破坏旧的小部件。你可以有一个更窄的代码。最坏的情况下,可能是重复的,请看这个