Два полноэкранных окна tkinter на отдельных мониторах на Raspbery Pi 4

#python #tkinter #raspberry-pi #tk #raspberry-pi4

Вопрос:

У меня есть простое приложение TK, которое отлично работает в полноэкранном режиме на одном мониторе, но теперь я хочу запустить два полноэкранных окна, по одному на каждом дисплее на Raspberry Pi 4. Два дисплея имеют разное разрешение и прекрасно работают сами по себе, но я не могу заставить работать два полноэкранных окна, оба полноэкранных окна только на первом дисплее.

Я пытаюсь сделать это с tkinter.Tk().geometry() помощью , это правильный путь или есть что-то более простое?

 import tkinter

root = tkinter.Tk()

# specify resolutions of both windows
w0, h0 = 3840, 2160
w1, h1 = 1920, 1080

# set up window for display on HDMI 0 
win0 = tkinter.Toplevel()
win0.geometry(f"{w0}x{h0}")
win0.attributes("-fullscreen", True)
win0.config(cursor="none") # remove cursor 
win0.wm_attributes("-topmost", 1) # make sure this window is on top 

# set up window for display on HDMI 1 
win1 = tkinter.Toplevel()
win1.geometry(f"{w1}x{h1}")
win1.attributes("-fullscreen", True)
win1.config(cursor="none")
win1.wm_attributes("-topmost", 1)

 

Ответ №1:

Вы должны сдвинуть второе окно вправо на ширину первого дисплея (система X сначала помещает дисплей на HDMI0 порт вниз, а затем помещает дисплей справа HDMI1 ). geometry позволяет убедиться, что они не перекрываются, а затем fullscreen работают должным образом.

Формат geometry строки: <width>x<height> xoffset yoffset .

 root = tkinter.Tk()

# specify resolutions of both windows
w0, h0 = 3840, 2160
w1, h1 = 1920, 1080

# set up window for display on HDMI 0 
win0 = tkinter.Toplevel()
win0.geometry(f"{w0}x{h0} 0 0")
win0.attributes("-fullscreen", True)

# set up window for display on HDMI 1 
win1 = tkinter.Toplevel()
win1.geometry(f"{w1}x{h1} {w0} 0") # <- the key is shifting right by w0 here 
win1.attributes("-fullscreen", True)

root.withdraw()  # hide the empty root window