tl; dr: Почему мой GUI падает, когда я его перемещаю.
Привет, во-первых, да, я смотрю некоторые подобные сообщения здесь и в Google, возможно, я пропустил золотойяблоко, так что если на этот вопрос действительно ответили 40 раз, то я искренне сожалею.
Так что я использую Python, и мой сценарий в основном состоит из двух циклов, где вы «застряли» до нажатия клавишинажата и большая петля, которая содержит все действительно хорошие вещи.
Моя проблема - GUI, все работает отлично, проблема в том, что при взаимодействии с окнами происходит сбой.Я пытался выглядеть многопоточным, но мне не удалось заставить его работать так, как я хочу.А так как скрипт в основном "while 1:", я могу понять, что GUI не нравится ...
Сам GUI просто используется в качестве вывода, кнопки не нужны, и я неМне не нужна огромная частота обновления.
Я готов изменить большую часть своего кода, если это необходимо, я все еще на ранней стадии разработки.В особенности бросьте Tkinter, я «почти» уверен, что могу делать то, что хочу, с PyGame, но это кажется мне излишним.
Код ниже - это лишний ненужный код, только barebone, но если этот GUIне сбой, он должен работать для моего полного сценария.
import keyboard as kb
from tkinter import *
# Much more imports are needed for the full script
# Here I also define a lot of fonction use in the loop
def talk(string: str):
"""
Update the UI witht he new text to output
:param string: the strind to output
:return: None
"""
canvas.create_polygon([0, 0, 0, 125, 600, 125, 600, 0], fill="black", width=2)
canvas.create_text(300, 100, text=string, font="terminal 20", fill="white")
canvas.pack()
root.update()
# Creating the ui
root = Tk()
canvas = Canvas(root, width=600, height=250, background='black')
canvas.create_line(50, 200, 550, 200, fill="red", width=3)
canvas.pack()
root.update()
Stop = False
while not Stop: # I do have way to stop this loop and shutdown the script properly
PushToTalk = False
talk("") # Reseting the output text
while not PushToTalk: # Stuck here until "pause" key is press
if kb.is_pressed("pause"):
PushToTalk = True
talk("Yes ?")
# Here are a lot of stuff happening
# And the "talk" function is use a lot for upputing informations
print("Bye")
Надеюсь, вы можете помочь мне!
Lyxilion.