#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