【问题标题】:ttk checkbutton appears when loaded up with black box in itttk checkbutton 加载时出现黑框
【发布时间】:2022-01-11 16:27:12
【问题描述】:

取自:tkk checkbutton appears when loaded up with black box in it

提供的解决方案只需一个检查按钮即可正常工作

import tkinter as Tk
from tkinter import IntVar
from tkinter.ttk import Frame, Checkbutton
class TestGui(Frame):
    def __init__(self, parent):
        Frame.__init__(self, parent)

        self.var1 = IntVar()
        self.var1.set(1)
        button = Checkbutton(parent,
            text="Pick me, pick me!",
            variable=self.var1)        # note difference here
        button.grid()

root = Tk.Tk()
app = TestGui(root)
root.mainloop()

但是当我在班级中使用循环创建多个按钮时,这只适用于最后一个按钮。

【问题讨论】:

  • 所以您向我们展示了有效的代码,而不是实际出现问题的代码 - 严重吗???我将在这里进行大胆的猜测,并说您可能没有保存附加到按钮的所有单个IntVars(可能在列表中)。
  • 你试过用var1代替self.var1吗?此外,提供代码的目的是展示您的问题。如果您只提供有效的代码,我们将更难为您提供帮助。请提供一个minimal reproducible example证明问题。请参阅How to Askhelp center,了解有关提出好问题的更多信息。
  • 对不起,杰森,我不是有意冒犯你的名誉。我是新来的,我会改进的。谢谢你们提供的好信息!

标签: python class tkinter ttk


【解决方案1】:

无法解释为什么,但我想通了。

不起作用(使用列表):

    varss = []
    for n in range (2):
        date = datetime.today() + timedelta(days=n)
        day = datetime.strftime(date, "%d.%m.%y")
        for h in range(24):

            date = date.replace(hour=h,minute=0)
            txt_date = datetime.strftime(date,"%H:%M")
            var = IntVar()
            c = ttk.Checkbutton(tour_frame,text = txt_date,variable = var)
            var.set(1)
            c.grid(column = n , row = h + 1)
            varss.append(var)

确实有效(使用字典列表):

    l= []
    for n in range (2):
        date = datetime.today() + timedelta(days=n)
        day = datetime.strftime(date, "%d.%m.%y")
        for h in range(24):

            date = date.replace(hour=h,minute=0)
            txt_date = datetime.strftime(date,"%H:%M")
            var = IntVar()
            c = ttk.Checkbutton(tour_frame,text = txt_date,variable = var)
            var.set(1)
            c.grid(column = n , row = h + 1)
            l.append(dict(datetime = date.replace(hour = h,minute=0,second=False,microsecond=False),value = var ))

【讨论】:

    猜你喜欢
    • 2021-07-21
    • 2017-08-19
    • 1970-01-01
    • 1970-01-01
    • 2017-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多