def monitorSizes(verbose=0): """ Return monitor sizes """ _qd = QtWidgets.QDesktopWidget() if sys.platform == 'win32' and _qd is None: import ctypes user32 = ctypes.windll.user32 wa = [[ 0, 0, user32.GetSystemMetrics(0), user32.GetSystemMetrics(1) ]] else: _applocalqt = QtWidgets.QApplication.instance() if _applocalqt is None: _applocalqt = QtWidgets.QApplication([]) _qd = QtWidgets.QDesktopWidget() else: _qd = QtWidgets.QDesktopWidget() nmon = _qd.screenCount() wa = [_qd.screenGeometry(ii) for ii in range(nmon)] wa = [[w.x(), w.y(), w.width(), w.height()] for w in wa] if verbose: for ii, w in enumerate(wa): print('monitor %d: %s' % (ii, str(w))) return wa
def place_window(self, window, category): screen = QtWidgets.QDesktopWidget().screenNumber( self.qapp.windows['main']) desktop_rect = QtWidgets.QDesktopWidget().availableGeometry(screen) window_rect = window.frameGeometry() prior_panel = self.selected(category, -2) if not prior_panel is None: prior_rect = prior_panel.frameGeometry() topleft = prior_panel.mapToGlobal(QtCore.QPoint(0, 0)) prior_rect.moveTopLeft( QtCore.QPoint(topleft.x() + 10, topleft.y() + 10)) center = prior_rect.center() else: center = desktop_rect.center() window_rect.moveCenter(center) position = window_rect.topLeft() visible = False for screen in range(QtWidgets.QDesktopWidget().screenCount()): if QtWidgets.QDesktopWidget().availableGeometry(screen).contains( window_rect): visible = True if not visible: position = desktop_rect.topLeft() return position
def setIntialPosition(self): screen = QtWidgets.QDesktopWidget().screenGeometry(self) xPos = screen.left() + screen.width() / 4 yPos = screen.top() + screen.height() / 3 self.setGeometry(xPos, yPos, 900, 500)
def center_window(window_ptr): """Center a window on whatever screen it appears. window_ptr - a pointer to a Qt window, whether an application or a QDialog. returns nothing.""" geometry = window_ptr.frameGeometry() center = QtWidgets.QDesktopWidget().availableGeometry().center() geometry.moveCenter(center) window_ptr.move(geometry.topLeft())
def __init__(self, application): super().__init__() self.application = application self.manager = ManagerWindow("Dataset Manager", self) if ICON_PATH.exists(): #pix_map_icon = QtGui.QPixmap(str(ICON_PATH), format="PNG") #self.setWindowIcon(QtGui.QIcon(pix_map_icon)) # this fixes a warning on OSX, but doesn't work at all on windows self.setWindowIcon(QtGui.QIcon(str(ICON_PATH))) else: logging.warning(f'cannot find icon at {ICON_PATH}') self.resize(QtWidgets.QDesktopWidget().availableGeometry(self).size() * 0.5) # change this for video capture self.model: Model = Model() self.processor_action = { QtWidgets.QAction(f"{key}", self): processor() for key, processor in sorted( processing.get_processor_classes().items()) } self.track_menu = None self.groups: DefaultDict[int, Group] = defaultdict(Group) self.setWindowTitle('TimeView') self.scrollArea = ScrollArea(self) self.scrollAreaWidgetContents = \ ScrollAreaWidgetContents(self.scrollArea) self.setCentralWidget(self.scrollArea) self.scrollArea.setWidget(self.scrollAreaWidgetContents) self.synchronized = True self.cursor_readout = False self.frames: List[Frame] = [] self.selected_frame: Optional[Frame] = None self.moving_frame: Optional[Frame] = None self.from_index: Optional[int] = None self.to_index: Optional[int] = None self.axis_width = 10 # for storing self.column_width_hint: List[int] = [] self.all_column_widths: List[Dict[ViewTable, int]] = [] self.reference_plot: Optional[pg.ViewBox] = None self.min_plot_width = self.width() self.help_window = self.createHelpWindow() self.createMenus() self.statusBar() self.status('Ready') self.guiAddPanel() self.evalTrackMenu()
def main(): KEITHLEY_ADDRESS = CONF.get('Ktransfer2600', 'KEITHLEY_ADDRESS') keithley = Keithley2600(KEITHLEY_ADDRESS) application = QtWidgets.QApplication(sys.argv) keithleyGUI = KeithleyGuiApp(keithley) desktop = QtWidgets.QDesktopWidget().availableGeometry() width = (desktop.width() - keithleyGUI.width()) / 2 height = (desktop.height() - keithleyGUI.height()) / 2 keithleyGUI.show() keithleyGUI.move(width, height) sys.exit(application.exec_())
def __init__(self, logWindow): """ Create an ErrorDialog object @param object logWindow: reference to LogWindow object that this popup belongs to """ super().__init__() self.logWindow = logWindow self.setWindowFlags(QtCore.Qt.Window) # self.setWindowModality(QtCore.Qt.NonModal) self.setWindowTitle('Qudi Error') wid = QtWidgets.QDesktopWidget() screenWidth = wid.screen(wid.primaryScreen()).width() screenHeight = wid.screen(wid.primaryScreen()).height() self.setGeometry((screenWidth - 500) / 2, (screenHeight - 100) / 2, 500, 100) self.layout = QtWidgets.QVBoxLayout() self.layout.setContentsMargins(3, 3, 3, 3) self.setLayout(self.layout) self.messages = [] self.msgLabel = QtWidgets.QLabel() # self.msgLabel.setWordWrap(False) # self.msgLabel.setMaximumWidth(800) self.msgLabel.setSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding) # self.msgLabel.setFrameStyle(QtGui.QFrame.Box) #self.msgLabel.setStyleSheet('QLabel { font-weight: bold }') self.layout.addWidget(self.msgLabel) self.msgLabel.setMaximumWidth(800) self.msgLabel.setMinimumWidth(500) self.msgLabel.setWordWrap(True) self.layout.addStretch() self.disableCheck = QtWidgets.QCheckBox('Disable error message popups') self.layout.addWidget(self.disableCheck) self.btnLayout = QtWidgets.QHBoxLayout() self.btnLayout.addStretch() self.okBtn = QtWidgets.QPushButton('OK') self.btnLayout.addWidget(self.okBtn) self.nextBtn = QtWidgets.QPushButton('Show next error') self.btnLayout.addWidget(self.nextBtn) self.nextBtn.hide() self.logBtn = QtWidgets.QPushButton('Show Log...') self.btnLayout.addWidget(self.logBtn) self.btnLayoutWidget = QtWidgets.QWidget() self.layout.addWidget(self.btnLayoutWidget) self.btnLayoutWidget.setLayout(self.btnLayout) self.btnLayout.addStretch() self.okBtn.clicked.connect(self.okClicked) self.nextBtn.clicked.connect(self.nextMessage) self.logBtn.clicked.connect(self.logClicked)
def __init__(self, text, title=None): super().__init__() self.vlay = QtWidgets.QVBoxLayout() self.setLayout(self.vlay) if title is not None: self.label = QtWidgets.QLabel() self.label.setText(title) self.label.setStyleSheet("font-weight: bold; font-size: 20px") self.vlay.addWidget(self.label) self.text = QtWidgets.QTextEdit() self.vlay.addWidget(self.text) self.text.setText(text) self.text.setReadOnly(True) # center window on screen qtRectangle = self.frameGeometry() centerPoint = QtWidgets.QDesktopWidget().availableGeometry().center() qtRectangle.moveCenter(centerPoint) self.setGeometry(qtRectangle.left(), qtRectangle.top(), 650, 300)
def __init__(self, dev=False, preload=False): super().__init__() self.title = 'CIDAN' scale = (self.logicalDpiX() / 96.0 - 1) / 2 + 1 sizeObject = QtWidgets.QDesktopWidget().screenGeometry(-1) self.width = 1200 * scale self.height = 1066.6 * scale if self.height > sizeObject.height() * .90: self.height = sizeObject.height() * .90 if self.width > sizeObject.width() * .95: self.width = sizeObject.width() * .95 self.setWindowTitle(self.title) self.setMinimumSize(self.width, self.height) self.main_menu = self.menuBar() self.table_widget = MainWidget(self, dev=dev, preload=preload) self.setCentralWidget(self.table_widget) # self.setStyleSheet(qdarkstyle.load_stylesheet()) style = str(""" QWidget {font-size: %dpx;} QTabWidget {font-size: %dpx; padding:1px; margin:%dpx;} QTabBar::tab { background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #E1E1E1, stop: 0.4 #DDDDDD, stop: 0.5 #D8D8D8, stop: 1.0 #D3D3D3); /*border: 2px solid #C4C4C3;*/ /*border-bottom-color: #C2C7CB; !* same as the pane color *!*/ min-width: 8ex; padding:%dpx; border:%dpx; } QComboBox::item:checked { font-weight: bold; height: %dpx; } """ % (25 * scale, 25 * scale, 2 * scale, 1.25 * scale, 1.25 * scale, 25 * scale)) self.setStyleSheet(qdarkstyle.load_stylesheet() + style) # extractAction.triggered.connect() self.show()
def __init__(self, image, input_path): QtWidgets.QMainWindow.__init__(self) self.image = image self.input_path = input_path self.image_view = AppImageView(parent=self) self.image_view.main_widget = self self.statusBar().showMessage('') padding = self.frameGeometry().size() - self.geometry().size() self.resize(image.size() + padding) central = QtWidgets.QWidget(self) self.vbox = QtWidgets.QVBoxLayout(central) self.vbox.setContentsMargins(0, 0, 0, 0) self.setCentralWidget(central) self.layout().setContentsMargins(0, 0, 0, 0) Expanding = QtWidgets.QSizePolicy.Expanding height_for_width = self.image_view.sizePolicy().hasHeightForWidth() policy = QtWidgets.QSizePolicy(Expanding, Expanding) policy.setHorizontalStretch(1) policy.setVerticalStretch(1) policy.setHeightForWidth(height_for_width) self.image_view.setSizePolicy(policy) self.image_view.setMouseTracking(True) self.image_view.setFocusPolicy(Qt.NoFocus) self.image_view.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff) self.image_view.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) self.vbox.addWidget(self.image_view) screen = QtWidgets.QDesktopWidget().screenGeometry(self) size = self.geometry() self.move( (screen.width() - size.width()) // 4, (screen.height() - size.height()) // 4 ) self.update_view() self.image_view.reset()
def calculate_grab_region(self, psize=-1): ''' this method will determine the ideal 'GrabRegion' on the screen where the MainWindow currently resides given psize. If psize=-1, the biggest possible psize given the screen is used. return value is a QRect. ''' screenRect = QtWidgets.QDesktopWidget().availableGeometry(self) if psize == -1: width = height = 0 for video_size, value in self.video_sizes.items(): if value[0][1] <= screenRect.height( ) and value[0][0] <= screenRect.width(): width = self.video_sizes[video_size][0][0] height = self.video_sizes[video_size][0][1] x = int(((screenRect.width() - width) / 2)) + screenRect.x() y = int(((screenRect.height() - height) / 2)) + screenRect.y() elif psize in self.video_sizes: width = self.video_sizes[psize][0][0] height = self.video_sizes[psize][0][1] if width <= screenRect.width() and height <= screenRect.height(): x = int(((screenRect.width() - width) / 2) + screenRect.x()) y = int(((screenRect.height() - height) / 2) + screenRect.y()) else: width = height = 0 x = int(((screenRect.width() - width) / 2) + screenRect.x()) y = int(((screenRect.height() - height) / 2) + screenRect.y()) else: width = height = 0 x = int(((screenRect.width() - width) / 2) + screenRect.x()) y = int(((screenRect.height() - height) / 2) + screenRect.y()) retval = QtCore.QRect(x, y, width, height) return retval
def showEvent(self, event): self.resize(self.width() * 1.25, self.height()) qr = self.frameGeometry() cp = QtWidgets.QDesktopWidget().availableGeometry().center() qr.moveCenter(cp) self.move(qr.topLeft())
def center(self): qr = self.frameGeometry() cp = QtWidgets.QDesktopWidget().availableGeometry().center() qr.moveCenter(cp) self.move(qr.topLeft())
def settings(self): ''' this method handles the settings on the screenCast (context menu) ''' mainWindow = self.main_window screenAG = QtWidgets.QDesktopWidget().availableGeometry(mainWindow) screenG = QtWidgets.QDesktopWidget().screenGeometry(mainWindow) menu = QtWidgets.QMenu(parent=self) audi_menu = self._generate_audio_input_menu() menu.addMenu(audi_menu) menu.addSeparator() main_window_size = self.get_grab_region() biggest_main_window_size = self.calculate_grab_region() itemset = sorted( set(list(self.video_sizes) + [main_window_size.height()])) for item in itemset: if item in self.video_sizes: text = f"{item}p ({self.video_sizes[item][0][0]}x{self.video_sizes[item][0][1]}) {self.video_sizes[item][1]}" icon = None if main_window_size.height() == self.video_sizes[item][0][1]: icon = qta.icon('mdi.check-bold', color='orange') enabled = self._is_valid_width(self.video_sizes[item][0][0], self.video_sizes[item][0][1], screenAG) else: text = f"({main_window_size.width()}x{main_window_size.height()}) → {biggest_main_window_size.height()}p" icon = qta.icon('mdi.check-bold', color='orange') enabled = True action = menu.addAction(text) if icon is not None: action.setIcon(icon) if item == 240 or ((item == main_window_size.height()) and biggest_main_window_size.height() == 240): action.triggered.connect(lambda: self.resize(240)) elif item == 360 or ((item == main_window_size.height()) and biggest_main_window_size.height() == 360): action.triggered.connect(lambda: self.resize(360)) elif item == 480 or ((item == main_window_size.height()) and biggest_main_window_size.height() == 480): action.triggered.connect(lambda: self.resize(480)) elif item == 720 or ((item == main_window_size.height()) and biggest_main_window_size.height() == 720): action.triggered.connect(lambda: self.resize(720)) elif item == 1080 or ((item == main_window_size.height()) and biggest_main_window_size.height() == 1080): action.triggered.connect(lambda: self.resize(1080)) elif item == 1440 or ((item == main_window_size.height()) and biggest_main_window_size.height() == 1440): action.triggered.connect(lambda: self.resize(1440)) elif item == 2160 or ((item == main_window_size.height()) and biggest_main_window_size.height() == 2160): action.triggered.connect(lambda: self.resize(2160)) action.setEnabled(enabled) menu.addSeparator() action = menu.addAction(qta.icon('mdi.monitor', color='orange'), f"{screenG.width()}x{screenG.height()}") action = menu.addAction( qta.icon('mdi.monitor-screenshot', color='orange'), f"{screenAG.width()}x{screenAG.height()}") cursorPoint = QtGui.QCursor.pos() menuSize = menu.sizeHint() menuPoint = QtCore.QPoint(cursorPoint.x() - menuSize.width(), cursorPoint.y() - menuSize.height()) menu.exec_(menuPoint)
def __init__(self, mainEngine, dataList=None, *args): """Constructor""" QtWidgets.QDialog.__init__(self, *args) self.mainEngine = mainEngine if mainEngine is None: if dataList is None: dataList = [] else: dataList = dataList else: dataList = self.loadDataListFromDB() # 表头 self.dataHeader = [ text.GATEWAY_NAME, text.CONNECT_STATUS, text.USER_ID, text.BROKER_ID, text.GATEWAY_MODULE, text.TD_ADDRESS, text.MD_ADDRESS, text.GATEWAY_DISPLAY_NAME ] # 定位 self.setGeometry(0, 0, 1120, 600) self.move(QtWidgets.QDesktopWidget().availableGeometry().center() - self.frameGeometry().center()) # 窗口标题 self.setWindowTitle(text.CONNECTION_MANAGER) # 数据 self.tableModel = ConnectionTableModel(self, dataList, self.dataHeader) self.tableView = QtWidgets.QTableView() self.tableView.setModel(self.tableModel) # 表格不允许选中 self.tableView.setSelectionMode( QtWidgets.QAbstractItemView.NoSelection) self.tableView.setSelectionBehavior( QtWidgets.QAbstractItemView.SelectRows) self.tableView.setFocusPolicy(Qt.NoFocus) # 绑定事件 self.tableView.clicked.connect(self.showSelection) self.tableView.clicked.connect(self.selectRow) self.tableView.doubleClicked.connect(self.rowDoubleClicked) # 控制排序 self.tableView.setSortingEnabled(False) # 交替颜色 self.tableView.setAlternatingRowColors(True) # 表头自适应等宽度 # tableViewHeader = self.tableView.horizontalHeader() # for i in range(0, len(self.dataHeader)): # tableViewHeader.setSectionResizeMode(i, QtWidgets.QHeaderView.Stretch) # 逐列设置宽度 self.tableView.setColumnWidth(0, 140) self.tableView.setColumnWidth(1, 70) self.tableView.setColumnWidth(2, 90) self.tableView.setColumnWidth(3, 70) self.tableView.setColumnWidth(4, 170) self.tableView.setColumnWidth(5, 190) self.tableView.setColumnWidth(6, 190) self.tableView.setColumnWidth(7, 150) # 布局 layout = QtWidgets.QGridLayout(self) # 表格布局 tableVBoxLayout = QtWidgets.QVBoxLayout(self) tableVBoxLayout.addWidget(self.tableView) # 创建添加按钮 self.selectAllButton = QtWidgets.QPushButton(text.SELECT_ALL) self.selectReverseButton = QtWidgets.QPushButton(text.SELECT_REVERSE) self.deleteSelectedButton = QtWidgets.QPushButton(text.DELETE_SELECTED) self.addButton = QtWidgets.QPushButton(text.ADD) self.connectSelectedButton = QtWidgets.QPushButton( text.CONNECT_SELECTED) self.connectAllButton = QtWidgets.QPushButton(text.CONNECT_ALL) self.disconnectSelectedButton = QtWidgets.QPushButton( text.DISCONNECT_SELECTED) self.disconnectAllButton = QtWidgets.QPushButton(text.DISCONNECT_ALL) # 按钮布局 buttonGridLayout = QtWidgets.QGridLayout() buttonGridLayout.addWidget(self.selectAllButton, 0, 1) buttonGridLayout.addWidget(self.selectReverseButton, 0, 2) buttonGridLayout.addWidget(self.deleteSelectedButton, 0, 3) buttonGridLayout.addWidget(self.addButton, 0, 4) buttonGridLayout.addWidget(self.connectSelectedButton, 0, 5) buttonGridLayout.addWidget(self.connectAllButton, 0, 6) buttonGridLayout.addWidget(self.disconnectSelectedButton, 0, 7) buttonGridLayout.addWidget(self.disconnectAllButton, 0, 8) # 按钮绑定事件 self.selectAllButton.clicked.connect(self.selectAll) self.selectReverseButton.clicked.connect(self.selectReverse) self.deleteSelectedButton.clicked.connect(self.deleteSelected) self.addButton.clicked.connect(self.add) self.connectSelectedButton.clicked.connect(self.connectSelected) self.connectAllButton.clicked.connect(self.connectAll) self.disconnectSelectedButton.clicked.connect(self.disconnectSelected) self.disconnectAllButton.clicked.connect(self.disconnectAll) # 整合布局 layout.addLayout(tableVBoxLayout, 0, 0) layout.addLayout(buttonGridLayout, 1, 0) self.setLayout(layout)