0

我正在为python + tkinter中的xfreerdp编写一个轻量级客户端。在屏幕的顶部,我放置了一个带有按钮的菜单,这些按钮应该出现在所有程序的顶部。只要我不使用xfreerdp的 /f 开关,它就可以工作。据我了解,如果另一个程序以全屏模式启动, wm_attributes ("-topmost", True)将不起作用。

tkinter中是否有另一种方法可以在全屏应用程序之上显示 Toplevel?

或者在tkinter窗口中运行xfreerdp的方法?

或者为 Python使用不同的 GUI 的类似方法?

from tkinter import *
import subprocess


# ======== MAIN MENU ========
root = Tk()

RootWindowsWidth = 600
RootWindowHeight = 350
#Define display resolution
ScrWdth = root.winfo_screenwidth()
ScrHgth = root.winfo_screenheight()
#Define margine for main menu
RootXLeft = round((ScrWdth/2) - (RootWindowsWidth/2))
RootYTop = round((ScrHgth/2) - (RootWindowHeight/2))
#Main menu settings
root.geometry(str(RootWindowsWidth) + "x" + str(RootWindowHeight) + "+" + str(RootXLeft) + "+" + str(RootYTop))
root['bg'] = '#fafafa'
root.title('MyRDP')
root.wm_attributes('-alpha', 1)

# Global variable for TopBar
TopBarWindowsWidth = 600
TopBarWindowHeight = 20
TopBarXLeft= round((ScrWdth/2) - (TopBarWindowsWidth/2))
TopBarYTop = 0

# ======== TOP MENU ========
global TopBar
TopBar = Toplevel()

TopBar.geometry(str(TopBarWindowsWidth) + "x" + str(TopBarWindowHeight) + "+" + str(TopBarXLeft) + "+" + str(TopBarYTop))
TopBar.wm_attributes('-alpha', 0.85)
TopBar.attributes('-type', 'dock')
TopBar.wm_attributes("-topmost", True)

TopButton01 = Button(TopBar, text='BTN1')
TopButton02 = Button(TopBar, text='BTN2')

TopButton01.grid(row=0,column=0)
TopButton02.grid(row=0,column=2)


# ======== Functions ========
#RDP connect button
def btn_click():
    subprocess.call("gnome-terminal -x xfreerdp /cert-ignore /v:192.168.31.63 /u:user /d:vm2 /p:123 /f", shell=True)

#Exit button
def btn_quit():
    root.quit()


# ======== MAIN MENU CONFIG ========
canvas = Canvas(root, height=350, width=600)
canvas.pack()

frame = Frame(root, bg='green')
frame.place(relx=0.15, rely=0.15, relwidth=0.7, relheight=0.7)

btn = Button(frame, text='RDP', bg='yellow', command=btn_click)
btn.pack()
btn = Button(frame, text='Close', bg='orange', command=btn_quit)
btn.pack()


root.mainloop()

我的程序截图

4

1 回答 1

-2

到目前为止,我只使用“/floatbar:sticky:off,default:visible,show:fullscreen”和“/multimon”xfreerdp 选项。现在就够了。

于 2022-02-26T21:59:48.130 回答