Computer >> Máy Tính >  >> Lập trình >> Python

Làm cách nào để dừng vòng lặp bằng nút dừng trong Tkinter?

Hãy xem xét một trường hợp chạy một tiến trình trong một vòng lặp và chúng ta muốn dừng vòng lặp bất cứ khi nào một nút được nhấp vào. Nói chung, trong các ngôn ngữ lập trình, để dừng trong khi liên tục vòng lặp, chúng tôi sử dụng break tuyên bố. Tuy nhiên, ở Tkinter, thay cho while vòng lặp, chúng tôi sử dụng after () để chạy chức năng đã xác định trong một vòng lặp. Để phá vỡ vòng lặp liên tục, hãy sử dụng biến Boolean toàn cục có thể được cập nhật để thay đổi trạng thái đang chạy của vòng lặp.

Đối với ví dụ đã cho,

  • Tạo một biến toàn cục hoạt động tương tự như cờ trong một vòng lặp.

  • Xác định hai nút, Bắt đầu Dừng lại , để bắt đầu và dừng quá trình thực thi.

  • Xác định hai hàm, on_start () on_stop () , để cung cấp bản cập nhật trong vòng lặp.

Ví dụ

# Import the required libraries
from tkinter import *
from tkinter import ttk

# Create an instance of tkinter frame or window
win = Tk()

# Set the size of the window
win.geometry("700x350")

running = True

# Define a function to print the text in a loop
def print_text():
   if running:
      print("Hello World")

   win.after(1000, print_text)

# Define a function to start the loop
def on_start():
   global running
   running = True

# Define a function to stop the loop
def on_stop():
   global running
   running = False

canvas = Canvas(win, bg="skyblue3", width=600, height=60)
canvas.create_text(150, 10, text="Click the Start/Stop to execute the Code", font=('', 13))
canvas.pack()

# Add a Button to start/stop the loop
start = ttk.Button(win, text="Start", command=on_start)
start.pack(padx=10)

stop = ttk.Button(win, text="Stop", command=on_stop)
stop.pack(padx=10)

# Run a function to print text in window
win.after(1000, print_text)

win.mainloop()

Đầu ra

Chạy đoạn mã trên để kiểm tra vòng lặp cho một điều kiện nhất định.

Làm cách nào để dừng vòng lặp bằng nút dừng trong Tkinter?

Nếu chúng ta chạy mã trên và nhấp vào nút Bắt đầu, thì nó sẽ in văn bản "Hello World" trong một vòng lặp có thể dừng lại bằng cách nhấp vào nút "Dừng".

Hello World
Hello World
Hello World
Hello World
Hello World

Process finished with exit code 0