问题描述
我目前正在通过将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 (将#修改为@)