创建窗口时,复选框是在原始窗口上创建的,而不是在第二个窗口上创建的,并且其他小部件放置在所需的窗口上,我可以以某种方式修复它吗?
编码:
import tkinter as tk
from tkinter import Tk, ttk, END, Label, Button, Entry, Text, Checkbutton
class CreateWindow(ttk.Frame):
def __init__(self, master):
super().__init__()
self.master = master
self.start_button = Button(master, width=6, text="START", font="Consolas 10", bg="#22A5F1", fg="#fff", relief="flat",)
self.start_button.pack()
self.open_checkbox = Checkbutton(text="Открыть", onvalue=True, offvalue=False)
self.open_checkbox.pack()
class MainWindow(ttk.Frame):
def __init__(self, master):
super().__init__()
self.master = master
self.create_button = Button(master, width=19, text="Create new", font="Consolas 10", bg="#191E2A", fg="#6EC7F4", relief="flat", command=self.create)
self.create_button.pack()
def create(self):
root_create = tk.Toplevel()
Frame = CreateWindow(root_create)
root = Tk()
Frame = MainWindow(root)
root.mainloop()
为了将控件放置在所需的窗口中,您需要将父窗口作为第一个参数传递。在您的按钮代码中,您可以执行此操作,但您不这样做
Checkbox。此外,为了将在您的类中创建的按钮
CreateWindow(继承自Frame)放置在此框架中,您需要CreateWindow传递给父类master,对于子元素,由向导指定self:您也可以稍微简化一下,并
CreateWindow使其成为继任者Toplevel: