Python 3.x tkinter在全屏激活时将虚拟键盘置于前台

Python 3.x tkinter在全屏激活时将虚拟键盘置于前台,python-3.x,tkinter,raspbian,raspberry-pi3,virtual-keyboard,Python 3.x,Tkinter,Raspbian,Raspberry Pi3,Virtual Keyboard,我用tkinter编写了一个应用程序,出于美观的考虑,我想全屏运行。全屏的意思是全屏。我使用虚拟键盘“florence”作为键盘 我看到有人找到了一个解决方案,当你点击tkinter输入小部件时自动显示键盘 我在代码中实现了这个功能,只要全屏模式没有激活,它就可以工作 问题: 佛罗伦萨键盘显示在我的全屏tkinter应用程序后面,但不在最上面。 我检查了键盘的设置,即使florence设置“保持在顶部”和“始终在顶部”处于活动状态,错误仍然存在 这是一个基本的tkinter示例代码,它会产生“错

我用tkinter编写了一个应用程序,出于美观的考虑,我想全屏运行。全屏的意思是全屏。我使用虚拟键盘“florence”作为键盘

我看到有人找到了一个解决方案,当你点击tkinter输入小部件时自动显示键盘

我在代码中实现了这个功能,只要全屏模式没有激活,它就可以工作

问题: 佛罗伦萨键盘显示在我的全屏tkinter应用程序后面,但不在最上面。

我检查了键盘的设置,即使florence设置“保持在顶部”和“始终在顶部”处于活动状态,错误仍然存在

这是一个基本的tkinter示例代码,它会产生“错误”:

从tkinter导入*
导入子流程
root=Tk()
def切换键盘(输入\小部件\ 1):
p=subprocess.Popen(['florence show'],shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE,universal_newlines=True)
如果不是“”==p.stderr.readline():
subprocess.Popen(['florence'],shell=True)
#示例条目小部件1
条目\小部件\ 1=条目(根)
条目\小部件\ 1.pack()
#示例条目小部件2
条目\小部件\ 2=条目(根)
条目\小部件\ 2.pack()
#将toggleKeyboard函数绑定到输入小部件1以打开florence
条目\小部件\ 1.bind(“”,切换键盘)
#允许用户通过退出按钮关闭应用程序
def关闭(事件):
root.destroy()
root.bind(“”,关闭)
#将应用程序调整为全屏(!)-全屏
属性(“-fullscreen”,True)
root.mainloop()

这是一个很长的尝试,但基于您是否尝试过
tkinter.WIDGET.lower()
tkinter.WIDGET.attributes(“-topst”,False)
?这是一个好主意,但不幸的是两者都不起作用。顺便说一下,我不一定要用佛罗伦萨键盘。任何其他虚拟键盘对我来说都很好。所以,如果这个问题可以通过使用不同的键盘来解决,那也没问题。你使用什么桌面环境?我用XFCE在我的笔记本电脑上试用了你的代码,键盘确实出现在了全屏应用程序的顶部。几天前我买了rp3,它附带了一个预装的raspian图像,在sd卡上。所以我想我用的是像素?当我在终端中键入$desktop\u SESSION并返回LXDE pit时,任何关于如何在rp3上找到当前桌面环境的提示都非常有用。这是一个很长的尝试,但基于您是否尝试过
tkinter.WIDGET.lower()
tkinter.WIDGET.attributes(“-topst”,False)
?这两种方法都不起作用。顺便说一下,我不一定要用佛罗伦萨键盘。任何其他虚拟键盘对我来说都很好。所以,如果这个问题可以通过使用不同的键盘来解决,那也没问题。你使用什么桌面环境?我用XFCE在我的笔记本电脑上试用了你的代码,键盘确实出现在了全屏应用程序的顶部。几天前我买了rp3,它附带了一个预装的raspian图像,在sd卡上。所以我想我用的是像素?当我在终端中键入$desktop\u SESSION并返回LXDE pi时,任何关于如何在rp3上找到当前桌面环境的提示都会非常有用
from tkinter import*
import subprocess

root = Tk()

def toggleKeyboard(entry_widget_1):
    p = subprocess.Popen(['florence show'], shell=True, stdout= subprocess.PIPE, stderr= subprocess.PIPE, universal_newlines=True)
    if not "" == p.stderr.readline():
        subprocess.Popen(['florence'], shell=True)

# example entry widget 1
entry_widget_1 = Entry(root)
entry_widget_1.pack()

# example entry widget 2
entry_widget_2 = Entry(root)
entry_widget_2.pack()

# bind toggleKeyboard function to entry-widget 1 to open florence
entry_widget_1.bind('<FocusIn>',toggleKeyboard)

# allow user to close app via escape button
def close(event):
    root.destroy()

root.bind('<Escape>',close)

# resize app to full(!)-fullscreen
root.attributes("-fullscreen",True)

root.mainloop()