Saya memiliki program ini yang mengeluarkan sesuatu ketika Anda menekan ya atau tidak, tetapi tidak ingin memulai loop saya sampai saya menutup jendela tkinter. Tujuan dari jendela tkinter adalah untuk menghentikan loop ketika saya menekan no, tombol stop tidak terlalu diperlukan, saya hanya meletakkannya di sana untuk menutup jendela.

Kode: impor tkinter sebagai tk

choice = False

def ja():
    global choice
    choice == True
    print("1 works")    # To check if this works

def nee():
    global choice
    choice == False
    print("2 works")    # Also to check if works

def prog():
    while True:
        if choice:
            print("3 works")
            # Program here

        if not choice:
            print("4 works")
            # Program here
            
root = tk.Tk()
root.title("Bot")
label1 = tk.Label(root, text="continue?", width=75, height=25)
Yes = tk.Button(root, text="Yes", width=25, height=5, command=ja)
No = tk.Button(root, text="No", width=25, height=5, command=nee)
Stop= tk.Button(root, text="Stop", width=25, height=5, command=root.quit)

label1.pack()
Yes.pack(fill=tk.Y, side=tk.LEFT)
No.pack(fill=tk.Y, side=tk.LEFT)
Stop.pack(fill=tk.Y, side=tk.LEFT)

root.mainloop()
prog()

Hasil ketika saya menekan ya dan tidak 2 kali dan kemudian berhenti (CATATAN: ketika Anda menekan berhenti, loop hanya diputar sampai ide macet. Saya menyadari ini dan jenisnya diperlukan untuk proyek saya jadi ini bukan bug.) :

1 works
1 works
2 works
2 works
2 works
4 works
4 works
4 works
4 works
....
0
Siebe 12 Mei 2021, 10:55

2 jawaban

Jawaban Terbaik

Gunakan after. Fungsi prog() dipanggil setelah mainloop() jadi setelah Anda menutup jendela, loop while dimulai.

import tkinter as tk
global choice
choice=False
def ja():
    
    choice == True
    print("1 works")    # To check if this works

def nee():
    
    choice == False
    print("2 works")    # Also to check if works

def prog():
    
    if choice:
        print("3 works")
        # Program here
    elif not choice:
        print("4 works")
        # Program here
    root.after(20,prog)
            
root = tk.Tk()
root.title("Bot")
label1 = tk.Label(root, text="continue?", width=75, height=25)
Yes = tk.Button(root, text="Yes", width=25, height=5, command=ja)
No = tk.Button(root, text="No", width=25, height=5, command=nee)
Stop= tk.Button(root, text="Stop", width=25, height=5, command=lambda: root.destroy())

label1.pack()
Yes.pack(fill=tk.Y, side=tk.LEFT)
No.pack(fill=tk.Y, side=tk.LEFT)
Stop.pack(fill=tk.Y, side=tk.LEFT)
root.after(20, prog)
root.mainloop()



0
Sujay 12 Mei 2021, 08:30

Ini bekerja:

import tkinter as tk
global choice
choice=False
def ja():
    global choice
    choice=True
    print("Yes works")    # To check if this works

def nee():
    global choice
    choice=False
    print("No works")    # To check if this works

def prog():
    if choice:
        print("Prog works")
        # Program here
    root.after(20,prog)
            
root = tk.Tk()
root.title("Bot")
label1 = tk.Label(root, text="continue?", width=75, height=25)
Yes = tk.Button(root, text="Yes", width=25, height=5, command=ja)
No = tk.Button(root, text="No", width=25, height=5, command=nee)
Stop= tk.Button(root, text="Stop", width=25, height=5, command=lambda: root.destroy())

label1.pack()
Yes.pack(fill=tk.Y, side=tk.LEFT)
No.pack(fill=tk.Y, side=tk.LEFT)
Stop.pack(fill=tk.Y, side=tk.LEFT)
root.after(20, prog)
0
Siebe 12 Mei 2021, 10:00