Python 您可以组合两个tkinter tk小部件吗?

Python 您可以组合两个tkinter tk小部件吗?,python,widget,tkinter,Python,Widget,Tkinter,我正在创建一个包含两个Tk()小部件的应用程序。是否有可能将它们并排组合成一个更大的小部件,以使应用程序更易于使用 from tkinter import * tk = Tk() canvas = Canvas(tk,width=400, height=150) canvas.pack() tk2 = Tk() canvas2 = Canvas(tk2,width=400, height=150) canvas2.pack() tk.mainloop(), tk2.mainloop()

我正在创建一个包含两个Tk()小部件的应用程序。是否有可能将它们并排组合成一个更大的小部件,以使应用程序更易于使用

from tkinter import *

tk = Tk()
canvas = Canvas(tk,width=400, height=150)
canvas.pack()

tk2 = Tk()
canvas2 = Canvas(tk2,width=400, height=150)
canvas2.pack()

tk.mainloop(), tk2.mainloop()
当我这样做,使基本窗口,我显然得到两个独立的窗口。可以合并成一个吗


我是一名初学者,正在使用python 3.3,不确定它是否是您想要的,但您可以在主Tk中创建两个框架

import tkinter as tk

class SubWindow(tk.Frame):
    def __init__(self, *args, **kwargs):
        tk.Frame.__init__(self, *args, **kwargs)
        x = tk.Text(self)
        x.pack()

class MainWindow(tk.Tk):
    def __init__(self, *args, **kwargs):
        tk.Tk.__init__(self)
        self.win1 = SubWindow(self)
        self.win1.pack(side="left")
        self.win2 = SubWindow(self)
        self.win2.pack(side="right")

if __name__ == "__main__":
    main = MainWindow()
    main.mainloop()
编辑: 以下是在窗口执行以下操作时使框架调整大小的代码:

import tkinter as tk

class SubWindow(tk.Frame):
    def __init__(self, *args, **kwargs):
        tk.Frame.__init__(self, *args, **kwargs)
        x = tk.Text(self)
        x.pack(expand=1, fill='both')

class MainWindow(tk.Tk):
    def __init__(self, *args, **kwargs):
        tk.Tk.__init__(self)
        self.win1 = SubWindow(self)
        self.win1.pack(side="left", expand=1, fill=tk.BOTH)
        self.win2 = SubWindow(self)
    self.win2.pack(side="right", expand=1, fill=tk.BOTH)

if __name__ == "__main__":
    main = MainWindow()
    main.mainloop()

同一个应用程序中不应该有两个
Tk
实例。如果需要多个窗口,则应创建
Toplevel
的实例。如果您希望所有内容都在一个窗口中,您可以创建
Frame
的实例,并根据需要(并排、自上而下、在网格中等)排列它们


虽然可以有多个
Tk
实例,但也有一些副作用会导致意外问题。Tk(tkinter的构建基础)被设计为具有单个根小部件。

谢谢。这很有道理。