Files
osurc_mars_rover_2017_2018/code_reference/QT/DualScreenTest/main.py

89 lines
3.0 KiB
Python

#!/usr/bin/env python
"""
Main file used to launch the Rover Base Station
No other files should be used for launching this application.
"""
#####################################
# Imports
#####################################
# Python native imports
import sys
from PyQt5 import QtWidgets, QtCore, uic
import signal
# Custom Imports
#####################################
# Global Variables
#####################################
UI_FILE_LEFT = "Resources/UI/RoverGui.ui"
UI_FILE_RIGHT = "Resources/UI/RoverGui2.ui"
FORM_LEFT, BASE_UI_LEFT = uic.loadUiType(UI_FILE_LEFT)
FORM_RIGHT, BASE_UI_RIGHT = uic.loadUiType(UI_FILE_RIGHT)
LEFT_SCREEN_ID = 0
RIGHT_SCREEN_ID = 1
#####################################
# Application Class Definition
#####################################
class LeftWindow(BASE_UI_LEFT, FORM_LEFT):
kill_threads_signal = QtCore.pyqtSignal()
def __init__(self, parent=None):
# noinspection PyArgumentList
super(BASE_UI_LEFT, self).__init__(parent)
self.setupUi(self)
#####################################
# Application Class Definition
#####################################
class RightWindow(BASE_UI_RIGHT, FORM_RIGHT):
kill_threads_signal = QtCore.pyqtSignal()
def __init__(self, parent=None):
# noinspection PyArgumentList
super(BASE_UI_RIGHT, self).__init__(parent)
self.setupUi(self)
#####################################
# Main Definition
#####################################
if __name__ == "__main__":
signal.signal(signal.SIGINT, signal.SIG_DFL) # This allows the keyboard interrupt kill to work properly
application = QtWidgets.QApplication(sys.argv) # Create the base qt gui application
system_desktop = QtWidgets.QDesktopWidget() # This gets us access to the desktop geometry
app_window = LeftWindow() # Make a window in this application
app_window.setWindowTitle("Rover Control") # Sets the window title
app_window.setWindowFlags(app_window.windowFlags() | # Sets the windows flags to:
QtCore.Qt.FramelessWindowHint | # remove the border and frame on the application,
QtCore.Qt.WindowStaysOnTopHint | # and makes the window stay on top of all others
QtCore.Qt.X11BypassWindowManagerHint) # This is needed to show fullscreen in gnome
app_window.setGeometry(system_desktop.screenGeometry(LEFT_SCREEN_ID)) # Sets the window to be on the first screen
app_window.showFullScreen() # Shows the window in full screen mode
app_window2 = RightWindow()
app_window2.setWindowTitle("Rover Video")
app_window2.setWindowFlags(app_window.windowFlags() |
QtCore.Qt.FramelessWindowHint |
QtCore.Qt.WindowStaysOnTopHint |
QtCore.Qt.X11BypassWindowManagerHint)
app_window2.setGeometry(system_desktop.screenGeometry(RIGHT_SCREEN_ID))
app_window2.showFullScreen()
application.exec_() # Execute launching of the application