📜  Window Resizer 控制面板 – Tkinter

📅  最后修改于: 2022-05-13 01:55:14.266000             🧑  作者: Mango

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()

输出: