Использование консоли при открытом окне tkinter

#python #python-3.x #multithreading #tkinter #multiprocessing

Вопрос:

Привет, я пытаюсь использовать консоль во время работы прозрачного окна. Таким образом, должна быть консоль и окно tkinter. И то, и другое должно быть пригодно для использования. Я попробовал использовать многопоточность и многопроцессорность, но и то, и другое не сработало. Я также попытался сделать окно tkinter в дополнительном файле и запустить его с помощью os.system(winow.py) но для людей, у которых не установлен python, это не сработает.

 from threading import Thread
import tkinter
import os
import keyboard
import time

FONT = "{Verdana} 10 bold"

btest = True

txt = """
    Text here
"""
root = tkinter.Tk()

def overlay():
    text = tkinter.Text(root,relief=tkinter.FLAT, 
                font=FONT,state='normal', height=5, bg='grey70', fg='blue')
    text.insert(tkinter.END, txt)
    text.config(state=tkinter.DISABLED)     #make it readonly with calling state=diabled    ,state=normal is write
    text.pack(expand=tkinter.YES, fill=tkinter.BOTH)

    button = tkinter.Button(root, text='Exit', bd=1, command=quit)
    button.pack(side=tkinter.BOTTOM, fill=tkinter.X)

    text.insert(tkinter.END, txt)

    root.geometry('200x250 1710-820')
    root.overrideredirect(1) # fenster ohne aussen rum :-)

    root.attributes('-alpha', 0.75) # fenster transparent
    root.attributes('-topmost', 1) # fenster immer im vordergrund
    root.mainloop()

def printgui():
    os.system("cls")
    print(f"Test: {btest} [alt]")

Thread(target=printgui()).start()
Thread(target=overlay()).start()

while True:
    if(keyboard.is_pressed("alt")):         #if u press "alt" it will change true to False
        btest = not btest
        time.sleep(0.2)
        printgui()

    if(keyboard.is_pressed("delete")):
        print("n")
        print("Exiting")
        time.sleep(3)
        os._exit(1)
 

Комментарии:

1. Измените printgui() на printgui , то же самое overlay , что и в вашем сценарии запуска потока

2. уже пробовал и не сработало, я получаю только наложение или графический интерфейс консоли

3. После того, как вы это измените, появятся ли у вас какие-либо ошибки?

4. нет, нет ошибки, он показывает мне только консоль или tkinter, но не оба одновременно

5. На этой линии: root.geometry('200x250 1710-820') , почему у вас есть 1710-820 ? Оба числа должны быть пять и меньше вашего размера экрана.