簡體   English   中英

Tkinter 顯示和隱藏 window 並恢復執行而不破壞 python?

[英]Tkinter show and hide window and resume execution without destroying in python?

我有一個python 腳本,它使用 Tkinter 創建一個 GUI Window 在創建 window 並讀取輸入后,我希望執行繼續進行到 while 循環,但由於 window 沒有被破壞,因此執行永遠不會恢復。 我希望它在讀取輸入后恢復。 但是在這里顯示“你輸入了 xxxx”之后,屏幕凍結並且執行永遠不會回到之前的 while 循環。 我該如何解決? 我不想每次都創建 window

from PIL import ImageGrab, Image
from glob import glob
from io import BytesIO
import time
import tkinter as tk

window = None
entry = None
window_created = False
x = None
name_of_file = None
input_wait = False

def handle_click(event):
    global name_of_file
    name_of_file = entry.get()
    print("You Entered " + name_of_file)
    entry.delete(0, tk.END)
    hide_window(window)


def show_window(window):
    window.update()
    window.deiconify()


def hide_window(window):
    window.update()
    window.withdraw()


def create_window():
    global window
    global entry
    window = tk.Tk()
    window.geometry("600x600")
    window.title("Name for your image")
    label = tk.Label(text="What do you want to name the image?")
    entry = tk.Entry()
    button = tk.Button(text="Create")
    button.bind("<Button-1>", handle_click)
    window.bind("<Return>", handle_click)
    label.pack()
    entry.pack()
    button.pack()
    window.mainloop()


while True:
    print("Looping")
    image_list = map(Image.open, glob('*.png'))
    presentItem = ImageGrab.grabclipboard()
    if presentItem is not None:
        with BytesIO() as f:
            presentItem.save(f, format='PNG')
            x = Image.open(f)
            if x not in image_list:
                print("New item found")
                if not window_created:
                    create_window()
                    window_created = True
                    print("Resumes")
                else:
                    show_window(window)
                    print("Resumes")
                presentItem.save(name_of_file + '.png', 'PNG')
    else:
        print("No item in clipboard")
    time.sleep(0.1)

You can hide a tkinter window with window.wm_attributes("-alpha", 0) and show with window.wm_attributes("-alpha", 0.99) . 此代碼添加了一個 alpha 值。 有一個代碼可以更好地表明:

import time
from tkinter import *

tk = Tk()

def more_alpha():
    global alpha
    alpha += 0.05
    if alpha >= 1:
        alpha = 0.99
    update()

def less_alpha():
    global alpha
    alpha -= 0.05
    if alpha <= 0:
        alpha = 0.01
    update()

def update():
    global alpha
    tk.wm_attributes("-alpha", alpha)

alpha = 0.5
update()

Button(tk, text="More visibility", command=more_alpha).grid(padx=25, pady=5)
Button(tk, text="Less visibility", command=less_alpha).grid(padx=25, pady=5)

tk.mainloop()

window 始終處於活動狀態,但在 alpha 值設置為 0 時不活動。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM