def test_application(qapp): assert qapp.get_mainwindow() is None wnd = widgets.MainWindow() mw_widget = widgets.Widget() mw_widget.set_id("test") wnd.setCentralWidget(mw_widget) assert qapp.get_mainwindow() == wnd widget = qapp.get_widget(name="test") assert widget == mw_widget widget = widgets.Application["test"] assert widget == mw_widget with pytest.raises(InvalidParamError): qapp.get_style_icon("testus") icon = qapp.get_style_icon("warning") assert isinstance(icon, QtGui.QIcon) qapp.set_effect_enabled("animate_toolbox") with pytest.raises(InvalidParamError): qapp.set_effect_enabled("test") # assert qapp.is_effect_enabled("animate_toolbox") # qapp.set_navigation_mode("keypad_directional") # with pytest.raises(InvalidParamError): # qapp.set_navigation_mode("test") # assert qapp.get_navigation_mode("keypad_directional") for widget in qapp: pass qapp.store_widget_states() qapp.restore_widget_states() event = QtGui.QKeyEvent( QtCore.QEvent.Type.KeyPress, QtCore.Qt.Key.Key_Down, QtCore.Qt.KeyboardModifier(0) ) assert qapp.send_event("test", event) is True qapp.post_event("test", event) with qapp.edit_stylesheet(): pass
def test_object(qapp): obj = core.Object() obj.set_id("test") with open("data.pkl", "wb") as jar: pickle.dump(obj, jar) with open("data.pkl", "rb") as jar: obj = pickle.load(jar) assert obj.get_id() == "test" w = widgets.Splitter("horizontal") w1 = widgets.PushButton() w1.set_id("w1") w2 = widgets.PlainTextEdit() w2.set_id("w2") w3 = widgets.MainWindow() w3.set_id("w3") w4 = widgets.TableView() w4.set_id("w4") w.add(w1, w2, w3, w4) assert w.find_children(widgets.PushButton, recursive=False) == [w1] assert w.find_children(core.Object, name="w2", recursive=False) == [w2] assert w.find_child(widgets.PlainTextEdit, recursive=True) == w2 assert w.find_child(core.Object, name="w2", recursive=False) == w2 assert w2.find_parent(widgets.Splitter) == w layout = widgets.BoxLayout("vertical") layout.add(w)
def test_statusbar(): widget = widgets.MainWindow() status_bar = widgets.StatusBar() status_bar.set_color("black") label = widgets.Label("test") status_bar.addWidget(label) status_bar.setup_default_bar() widget.setStatusBar(status_bar)
def test_statusbar(): widget = widgets.MainWindow() status_bar = widgets.StatusBar() status_bar.set_color("black") label = widgets.Label("test") status_bar.addWidget(label) status_bar.setup_default_bar() status_bar.show_message("test") status_bar.add_action(widgets.Action()) status_bar += widgets.Action() widget.setStatusBar(status_bar) status_bar.add_widget(widgets.Widget()) status_bar += widgets.Widget() status_bar.add_widget(widgets.Widget(), permanent=True)
def __init__(self, parent: QtWidgets.QWidget | None = None): super().__init__(parent) # Remove window title bar and frame self.setWindowFlags(QtCore.Qt.WindowFlag.Window # type: ignore | QtCore.Qt.WindowFlag.FramelessWindowHint) self.title_bar = CustomTitleBar(self) self.main_widget = widgets.MainWindow() # Set up layout self.main_layout = widgets.BoxLayout("vertical") self.main_layout.addWidget(self.title_bar) self.main_layout.addWidget(self.main_widget) self.main_layout.setContentsMargins(0, 0, 0, 0) self.main_layout.setSpacing(0) self.grip_layout = widgets.GridLayout() self.grip_layout.addLayout(self.main_layout, 1, 1) self.grip_layout.addWidget(EdgeGrip("top"), 0, 1) self.grip_layout.addWidget(EdgeGrip("right"), 1, 2) self.grip_layout.addWidget(EdgeGrip("bottom"), 2, 1) self.grip_layout.addWidget(EdgeGrip("left"), 1, 0) self.grip_layout.addWidget(EdgeGrip("top_left"), 0, 0) self.grip_layout.addWidget(EdgeGrip("top_right"), 0, 2) self.grip_layout.addWidget(EdgeGrip("bottom_left"), 2, 0) self.grip_layout.addWidget(EdgeGrip("bottom_right"), 2, 2) self.grip_layout.setContentsMargins(0, 0, 0, 0) self.grip_layout.setSpacing(0) self.setLayout(self.grip_layout) if sys.platform == "win32": self.hwnd = self.winId().__int__() window_style = win32gui.GetWindowLong(self.hwnd, GWL_STYLE) win32gui.SetWindowLong( self.hwnd, GWL_STYLE, window_style | WS_POPUP | WS_THICKFRAME | WS_CAPTION | WS_SYSMENU | WS_MAXIMIZEBOX | WS_MINIMIZEBOX, )
def test_mainwindow(): window = widgets.MainWindow() window.set_icon("mdi.timer") w = widgets.DockWidget() window.add_dockwidget(w, "left") window.show() window.close() window.load_window_state() window.toggle_fullscreen() window.toggle_fullscreen() ss = dict(width="1px", border="none") window.set_stylesheet("QMainWindow::separator", ss) window.add_widget_as_dock("test", "Title") with open("data.pkl", "wb") as jar: pickle.dump(window, jar) with open("data.pkl", "rb") as jar: window = pickle.load(jar)
def test_mainwindow(): window = widgets.MainWindow() window.set_icon("mdi.timer") w = widgets.DockWidget() window.add_dockwidget(w, "left") window.show() window.close() window.load_window_state() window.toggle_fullscreen() window.toggle_fullscreen() window.add_toolbar(widgets.ToolBar()) assert len(window.get_toolbars()) == 1 assert len(window.get_docks()) == 1 window.remove_dockwidgets([w]) window.add_toolbar_break() ss = dict(width="1px", border="none") window.set_stylesheet("QMainWindow::separator", ss) window.createPopupMenu() window.add_widget_as_dock("test", "Title") with open("data.pkl", "wb") as jar: pickle.dump(window, jar) with open("data.pkl", "rb") as jar: window = pickle.load(jar)
self.addAction(action) return action def add_separator(self): self.addSeparator() def add(self, *items: QtWidgets.QMenu | QtWidgets.QAction): for i in items: if isinstance(i, QtWidgets.QMenu): action = widgets.Action(parent=self) action.set_text(i.title()) action.set_menu(i) self.addAction(action) else: self.addAction(i) if __name__ == "__main__": app = widgets.app() win = widgets.MainWindow() menu_bar = MenuBar() menuaction = menu_bar.add_menu("test") act = menu_bar.add_action("action") sep = menu_bar.addSeparator() act2 = menu_bar.add_action("action2") menu = widgets.Menu("testaa") menu_bar.add(menu) win.setMenuBar(menu_bar) win.show() app.main_loop()
from __future__ import annotations from prettyqt import widgets from prettyqt.qt import QtWidgets QtWidgets.QColumnView.__bases__ = (widgets.AbstractItemView,) class ColumnView(QtWidgets.QColumnView): pass if __name__ == "__main__": app = widgets.app() dlg = widgets.MainWindow() status_bar = ColumnView() dlg.show() app.main_loop()
super().start() if self.parentWidget and self._disable_parent: self.parentWidget().setEnabled(False) for item in self.additional_disabled: item.setEnabled(False) def stop(self): super().stop() if self.parentWidget() and self._disable_parent: self.parentWidget().setEnabled(True) for item in self.additional_disabled: item.setEnabled(True) def _update_position(self): parent = self.parentWidget() if parent and self._center_on_parent: self.move( parent.width() // 2 - self.width() // 2, parent.height() // 2 - self.height() // 2, ) if __name__ == "__main__": app = widgets.app() # app.set_theme("dark") mainwindow = widgets.MainWindow() spinner = WaitingSpinner(mainwindow) mainwindow.show() spinner.start() app.main_loop()
def test_mainwindow(): widget = widgets.MainWindow() widget.show() widget.close()