输入条目中的python tkinter + pygame问题

问题描述

我目前正在通过将pygame嵌入Tkinter窗口来开发显示器,以便可以同时使用Tkinter和pygame主窗口中定义的元素来按时刷新视图。

当我使用Tkinter的Entry输入一些文本时,如果我单击pygame部件,则仍会保持对该Entry的关注,但是当我在键盘上按“退格”键时,Entry会添加一个空字符(如空格键) ),当我在python上打印时,它显示为。之后,当我用鼠标单击该条目时,一切都将变得正常。

有什么解决办法吗?谢谢。

编辑:

以下是演示我的问题的代码。运行此代码后,请单击顶部的条目,然后单击黑色位置(pygame区域),然后尝试按退格键。

import tkinter as tk
from tkinter import ttk
import os

import pygame
from pygame.locals import *


class displayer():
    def __init__(self):
        self.tkRoot = tk.Tk()

        self.ScreenWidth = self.tkRoot.winfo_screenwidth() * 1  # *1 to avoid using dynamic reference
        self.ScreenHeight = self.tkRoot.winfo_screenheight() * 1  # *1 to avoid using dynamic reference

        self.tkRoot.title('Test')

        self.MainFrame = tk.Frame(self.tkRoot,width=100,height=100) #creates embed frame for pygame window
        self.MainFrame.grid(row=0,column=0,columnspan=1) # Adds grid

        self.Entry = tk.Entry(self.MainFrame)
        self.Entry.grid(row=0,column=0) # Adds grid

        self.GameFrame = tk.Frame(self.MainFrame,width=1000,height=1000)
        self.GameFrame.grid(row=1,column=0) # Adds grid
        os.environ['SDL_WINDOWID'] = str(self.GameFrame.winfo_id())
        os.environ['SDL_VIDEODRIVER'] = 'windib'

        # Pygame
        pygame.init()
        pygame.font.init()

        pygame.display.set_mode((1000,1000),pygame.RESIZABLE)
        pygame.display.set_caption('Test')
        self.clock = pygame.time.Clock()
        
        self.displayLoop_boo = True
        while self.displayLoop_boo:
            self.tkRoot.update()

        pygame.quit()

if __name__ == "__main__":
    mydisplayer = displayer()

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)