代码之家  ›  专栏  ›  技术社区  ›  DavalliTV

(Python)通过单选按钮Python更新背景

  •  1
  • DavalliTV  · 技术社区  · 7 年前

    因此,当选中某个单选按钮时,我试图更改此帧的背景。

    我的框架在一个类中,单选按钮的函数在这个类之外。(这样我就可以在所有其他帧上调用它们。)

    问题是,每当我选择单选按钮时,都会出现以下错误:

    configure() missing 1 required positional argument: 'self'
    

    但是,在放置时 self 内部或 configure 自己 未定义。

    我不是百分之百确定何时使用 所以任何帮助都是值得的。

    更改背景的功能:

    def bgLight():
        Options.configure(self, bg="#fff")
        Options.configure(self, fg="#000")
    
    def bgDark():
        Options.configure(bg="#000")
        Options.configure(fg="#fff")
    

    以及单选按钮的代码:

    class Options(tk.Frame):
    
    def __init__(self, parent, controller):
        tk.Frame.__init__(self, parent)
        self.controller = controller
    
        label = tk.Label(self, text="Options", font=TITLE_FONT)
        label.pack(side="top", fill="x", pady=10)
        label = tk.Label(self, text="Change it up a bit!", font=SUBTITLE_FONT)
        label.pack(fill="x", pady=10)
    
        #These are the two radio buttons that will change the background color
        radio = tk.Radiobutton(self, text="One", value=1, command=bgLight)
        radio.pack()
        radio = tk.Radiobutton(self, text="Two", value=0, command=bgDark)
        radio.pack()
    
        button = tk.Button(self, text="Back To Main Menu",
                           command=lambda: controller.show_frame("Menu"))
        button.pack()
    

    正如我所说,我对何时何地使用没有百分之百的信心 自己 所以我主要是在试验把它放在哪里。

    1 回复  |  直到 7 年前
        1
  •  2
  •   PRMoureu    7 年前

    方法 configure 需要应用于实例,而不是基类。

    让它在 Options bgLight bgDark 作为类的方法:

    def bgLight(self):
        self.configure(bg="#fff")
        #self.configure(fg="#000") no foreground on Frame
    
    def bgDark(self):
        self.configure(bg="#000")
        #self.configure(fg="#fff")
    

    Radiobutton 命令:

    radio = tk.Radiobutton(self, text="One", value=1, command=self.bgLight)
    radio = tk.Radiobutton(self, text="Two", value=0, command=self.bgDark)
    

    background foreground controler 配置 控制器 . tkinter.Frame .

    ,方法可以是:

    def bgLight(self):
        self.controller.background = "#fff"
        self.controller.foreground = "#000"
    
    def bgDark(self):
        self.controller.background = "#000"
        self.controller.foreground = "#fff"