Bài viết hướng dẫn tạo GUI control panel thay đổi kích thước cửa sổ bằng thanh trượt (slider) cho chiều cao và chiều rộng.
Sử dụng ttk library của Tkinter để tạo slider. Import ttk, tạo cửa sổ mới cần resize.
Trước tiên import thư viện và thiết kế các thanh điều khiển bằng slider.
Ví dụ 1: Tạo giao diện slider
# Import thư viện
from tkinter import *
from tkinter import ttk
# Tạo đối tượng cửa sổ chính
win = Tk()
win.title("Window Resizer")
lab = Label(win, text="Window Resizer", font=('Poppins bold', 20))
win.geometry("500x500")
# Nút mở cửa sổ mới
launch_button = Button(win, text="Launch")
launch_button.pack(pady=10)
# Các LabelFrame cho Width, Height, Both
width_frame = LabelFrame(win, text="Width")
width_frame.pack(pady=10)
height_frame = LabelFrame(win, text="Height")
height_frame.pack(pady=10)
both_frame = LabelFrame(win, text="Both")
both_frame.pack(pady=10)
# Slider Width
width_slider = ttk.Scale(width_frame, from_=100, to=500, orient=HORIZONTAL, length=200, value=100)
width_slider.pack(pady=10, padx=20)
# Slider Height
height_slider = ttk.Scale(height_frame, from_=100, to=500, orient=VERTICAL, length=200, value=100)
height_slider.pack(pady=10, padx=20)
# Slider Both
both_slider = ttk.Scale(both_frame, from_=100, to=500, orient=HORIZONTAL, length=200, value=100)
both_slider.pack(pady=10, padx=20)
win.mainloop()Sau khi tạo GUI slider, cần định nghĩa các hàm xử lý sự kiện cho slider và điều khiển cửa sổ.
Tạo hàm mở cửa sổ mới, sau đó hàm thay đổi width, height, both.
Ví dụ 2: Code hoàn chỉnh với xử lý sự kiện
# Import thư viện
from tkinter import *
from tkinter import ttk
win = Tk()
win.title("Window Resizer")
lab = Label(win, text="Window Resizer", font=('Poppins bold', 20))
win.geometry("500x500")
# Định nghĩa các hàm sự kiện
# Mở cửa sổ mới
def launch_win():
global win1
win1 = Toplevel()
win1.geometry("100x100")
# Thay đổi width
def change_width(x):
win1.geometry(f"{int(width_slider.get())}x{int(height_slider.get())}")
# Thay đổi height
def change_height(x):
win1.geometry(f"{int(width_slider.get())}x{int(height_slider.get())}")
# Thay đổi cả width và height
def change_both(x):
win1.geometry(f"{int(both_slider.get())}x{int(both_slider.get())}")
# Nút Launch gán command
launch_button = Button(win, text="Launch", command=launch_win)
launch_button.pack(pady=10)
# LabelFrames
width_frame = LabelFrame(win, text="Width")
width_frame.pack(pady=10)
height_frame = LabelFrame(win, text="Height")
height_frame.pack(pady=10)
both_frame = LabelFrame(win, text="Both")
both_frame.pack(pady=10)
# Slider Width với command
width_slider = ttk.Scale(width_frame, from_=100, to=500, orient=HORIZONTAL, length=200, command=change_height, value=100)
width_slider.pack(pady=10, padx=20)
# Slider Height với command
height_slider = ttk.Scale(height_frame, from_=100, to=500, orient=VERTICAL, length=200, command=change_width, value=100)
height_slider.pack(pady=10, padx=20)
# Slider Both với command
both_slider = ttk.Scale(both_frame, from_=100, to=500, orient=HORIZONTAL, length=200, command=change_both, value=100)
both_slider.pack(pady=10, padx=20)
win.mainloop()Kết quả
Chạy code sẽ tạo ra cửa sổ điều khiển resize.
