我正在创建一个具有两个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
答案 0 :(得分: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()
答案 1 :(得分:0)
您不能在同一个应用中拥有两个Tk
个实例。如果您想要多个窗口,则可以创建Toplevel
的实例。如果你想在一个窗口中创建所有内容,你可以创建Frame
的实例并根据需要排列它们(并排,从上到下,在网格中等)