Window Resizer 控制面板 – Tkinter
先决条件: Tkinter
Python为开发 GUI(图形用户界面)提供了多种选择。在所有 GUI 方法中,Tkinter 是最常用的方法。它是Python附带的 Tk GUI 工具包的标准Python接口。 Python with Tkinter 是创建 GUI 应用程序的最快、最简单的方法。
在本文中,我们将学习如何制作一个窗口调整器控制面板,用于在初始化后调整窗口大小。
方法:
- 我们将创建两个窗口;一个窗口是父窗口,另一个窗口是子窗口。
- 添加一个按钮;当我们点击一个按钮时,它会打开子窗口。
- 父窗口包含三个滑块;宽度、高度和两个滑块。
- 随着滑动值的变化,子几何体也会发生变化。
让我们一步一步地理解实现:-
第 1 步:创建一个普通的 Tkinter 窗口
Python3
# Import Library
from tkinter import *
# Create Object
root = Tk()
# Set title
root.title("Controls")
# Set Geometry
root.geometry("400x500")
# Execute Tkinter
root.mainloop()
Python3
# Import Library
from tkinter import *
from tkinter import ttk
# Create Object
root = Tk()
# Set title
root.title("Controls")
# Set Geometry
root.geometry("400x500")
# Make Button
launch_button = Button(root,
text = "launch Window")
launch_button.pack(pady = 10)
# Add Label Frames
width_frame = LabelFrame(root,
text = "Change width")
width_frame.pack(pady = 10)
height_frame = LabelFrame(root,
text = "change height")
height_frame.pack(pady = 10)
both_frame = LabelFrame(root,
text = "change both")
both_frame.pack(pady = 10)
# Add Scale bar
width_slider = ttk.Scale(width_frame,
from_ = 100,
to = 500,
orient = HORIZONTAL,
length = 200, value = 100)
width_slider.pack(pady = 10, padx = 20)
height_slider = ttk.Scale(height_frame,
from_ = 100, to = 500,
orient = VERTICAL,
length = 200, value = 100)
height_slider.pack(pady = 10, padx = 20)
both_slider = ttk.Scale(both_frame, from_ = 100,
to = 500, orient = HORIZONTAL,
length = 200, value = 100)
both_slider.pack(pady = 10,padx = 20)
# Execute Tkinter
root.mainloop()
Python3
# Open New Window
def launch():
global second
second = Toplevel()
second.geometry("100x100")
# Change width
def width_slide(x):
second.geometry(f"{int(width_slider.get())}x{int(height_slider.get())}")
# Change height
def height_slide(x):
second.geometry(f"{int(width_slider.get())}x{int(height_slider.get())}")
# Change both width and height
def both_slide(x):
second.geometry(f"{int(both_slider.get())}x{int(both_slider.get())}")
Python3
# Import Library
from tkinter import *
from tkinter import ttk
# Create Object
root = Tk()
# Set title
root.title("Controls")
# Set Geometry
root.geometry("400x500")
# Open New Window
def launch():
global second
second = Toplevel()
second.geometry("100x100")
# Change width
def width_slide(x):
second.geometry(f"{int(width_slider.get())}x{int(height_slider.get())}")
# Change height
def height_slide(x):
second.geometry(f"{int(width_slider.get())}x{int(height_slider.get())}")
# Change both width and height
def both_slide(x):
second.geometry(f"{int(both_slider.get())}x{int(both_slider.get())}")
# Make Button
launch_button = Button(root,
text = "launch Window",
command = launch)
launch_button.pack(pady = 10)
# Add Label Frames
width_frame = LabelFrame(root,
text = "Change width")
width_frame.pack(pady = 10)
height_frame = LabelFrame(root,
text = "change height")
height_frame.pack(pady = 10)
both_frame = LabelFrame(root,
text = "change both")
both_frame.pack(pady = 10)
# Add Scale bar
width_slider = ttk.Scale(width_frame,from_ = 100, to = 500,
orient = HORIZONTAL, length = 200,
command = width_slide,
value = 100)
width_slider.pack(pady = 10, padx = 20)
height_slider = ttk.Scale(height_frame, from_ = 100, to = 500,
orient = VERTICAL, length = 200,
command = height_slide,
value = 100)
height_slider.pack(pady = 10, padx = 20)
both_slider = ttk.Scale(both_frame, from_ = 100,to = 500,
orient = HORIZONTAL, length = 200,
command = both_slide, value = 100)
both_slider.pack(pady = 10, padx = 20)
# Execute Tkinter
root.mainloop()
输出:
第 2 步:添加按钮、滑块和标签框
蟒蛇3
# Import Library
from tkinter import *
from tkinter import ttk
# Create Object
root = Tk()
# Set title
root.title("Controls")
# Set Geometry
root.geometry("400x500")
# Make Button
launch_button = Button(root,
text = "launch Window")
launch_button.pack(pady = 10)
# Add Label Frames
width_frame = LabelFrame(root,
text = "Change width")
width_frame.pack(pady = 10)
height_frame = LabelFrame(root,
text = "change height")
height_frame.pack(pady = 10)
both_frame = LabelFrame(root,
text = "change both")
both_frame.pack(pady = 10)
# Add Scale bar
width_slider = ttk.Scale(width_frame,
from_ = 100,
to = 500,
orient = HORIZONTAL,
length = 200, value = 100)
width_slider.pack(pady = 10, padx = 20)
height_slider = ttk.Scale(height_frame,
from_ = 100, to = 500,
orient = VERTICAL,
length = 200, value = 100)
height_slider.pack(pady = 10, padx = 20)
both_slider = ttk.Scale(both_frame, from_ = 100,
to = 500, orient = HORIZONTAL,
length = 200, value = 100)
both_slider.pack(pady = 10,padx = 20)
# Execute Tkinter
root.mainloop()
输出:-
第 3 步:现在我们将创建四个函数;一个函数用于打开子窗口的按钮,另外三个用于更改几何形状。
使用 Toplevel() 方法创建子窗口。
蟒蛇3
# Open New Window
def launch():
global second
second = Toplevel()
second.geometry("100x100")
# Change width
def width_slide(x):
second.geometry(f"{int(width_slider.get())}x{int(height_slider.get())}")
# Change height
def height_slide(x):
second.geometry(f"{int(width_slider.get())}x{int(height_slider.get())}")
# Change both width and height
def both_slide(x):
second.geometry(f"{int(both_slider.get())}x{int(both_slider.get())}")
下面是完整的实现:
蟒蛇3
# Import Library
from tkinter import *
from tkinter import ttk
# Create Object
root = Tk()
# Set title
root.title("Controls")
# Set Geometry
root.geometry("400x500")
# Open New Window
def launch():
global second
second = Toplevel()
second.geometry("100x100")
# Change width
def width_slide(x):
second.geometry(f"{int(width_slider.get())}x{int(height_slider.get())}")
# Change height
def height_slide(x):
second.geometry(f"{int(width_slider.get())}x{int(height_slider.get())}")
# Change both width and height
def both_slide(x):
second.geometry(f"{int(both_slider.get())}x{int(both_slider.get())}")
# Make Button
launch_button = Button(root,
text = "launch Window",
command = launch)
launch_button.pack(pady = 10)
# Add Label Frames
width_frame = LabelFrame(root,
text = "Change width")
width_frame.pack(pady = 10)
height_frame = LabelFrame(root,
text = "change height")
height_frame.pack(pady = 10)
both_frame = LabelFrame(root,
text = "change both")
both_frame.pack(pady = 10)
# Add Scale bar
width_slider = ttk.Scale(width_frame,from_ = 100, to = 500,
orient = HORIZONTAL, length = 200,
command = width_slide,
value = 100)
width_slider.pack(pady = 10, padx = 20)
height_slider = ttk.Scale(height_frame, from_ = 100, to = 500,
orient = VERTICAL, length = 200,
command = height_slide,
value = 100)
height_slider.pack(pady = 10, padx = 20)
both_slider = ttk.Scale(both_frame, from_ = 100,to = 500,
orient = HORIZONTAL, length = 200,
command = both_slide, value = 100)
both_slider.pack(pady = 10, padx = 20)
# Execute Tkinter
root.mainloop()
输出: