def _draw_profile(self, profile, is_selected, layout): profile_widget = QFrame() profile_widget.setMinimumSize(400, 55) profile_widget.setMaximumSize(400, 55) if is_selected: profile_widget.setStyleSheet("QFrame {background-color: rgb(200,200,255);}") else: profile_widget.setStyleSheet("QFrame {background-color: rgb(200,200,200);}") profile_insides = QHBoxLayout() profile_widget.setLayout(profile_insides) title_and_description_layout = QVBoxLayout() title = QLabel(cutoff_string(profile.name, 30)) title.setAlignment(QtCore.Qt.AlignLeft | QtCore.Qt.AlignTop) title.setMaximumSize(200, 20) title.setMinimumSize(200, 20) title_and_description_layout.addWidget(title) desc = QLabel(cutoff_string(profile.description, 50)) desc.setAlignment(QtCore.Qt.AlignLeft | QtCore.Qt.AlignBottom) desc.setMaximumSize(350, 20) desc.setMinimumSize(350, 20) title_and_description_layout.addWidget(desc) title_and_description_layout.addSpacerItem(QSpacerItem(40, 40, QSizePolicy.MinimumExpanding)) profile_insides.addLayout(title_and_description_layout) layout.addWidget(profile_widget) return profile_widget
def _InitUI(self): self.setWindowTitle("搜索") self.setWindowFlags(Qt.Popup | Qt.Sheet) vBox = QVBoxLayout(self) hBox = QHBoxLayout() self.m_Search = QLineEdit(self) self.m_Search.setFocusPolicy(Qt.ClickFocus) self.m_Search.setClearButtonEnabled(True) self.m_Search.setPlaceholderText("搜索节点或者槽名称") hBox.addWidget(self.m_Search) self.m_BtnMatch = QPushButton("全匹配", self) self.m_BtnMatch.setToolTip("点击切换全匹配/模糊匹配") hBox.addWidget(self.m_BtnMatch) vBox.addLayout(hBox) line = QFrame(self) line.setMinimumSize(QSize(0, 2)) line.setMaximumSize(QSize(1234567, 2)) line.setFrameShape(QFrame.HLine) line.setFrameShadow(QFrame.Sunken) vBox.addWidget(line) self.m_Tree = QTreeView(self) self.m_Tree.setHeaderHidden(True) self.m_Tree.setModel(QStandardItemModel(self)) self.m_Tree.setEditTriggers(QAbstractItemView.NoEditTriggers) vBox.addWidget(self.m_Tree)
def drawTop(self): topFrame = QFrame(self) topFrame.resize(self.width(), self.height() / 4) topFrame.setMinimumSize(self.width(), self.height() / 4) topFrame.setMaximumSize(self.width(), self.height() / 4 + 1) topFrame.setStyleSheet("background-color:yellow") imageLabel = QLabel(topFrame) image = QPixmap("ressources/logotl.svg") imageLabel.setPixmap(image) imageLabel.show() #top UI layoutTop = QHBoxLayout() layoutTop.setAlignment(Qt.AlignVCenter) font = QFont("Times new roman", 25) self.name = QLabel('tl-live', self) self.name.setAlignment(Qt.AlignRight) self.name.setFont(font) self.name.setStyleSheet("color:blue") layoutTop.addWidget(imageLabel) layoutTop.addWidget(self.name) layoutTop.setAlignment(self.name, Qt.AlignVCenter) topFrame.setLayout(layoutTop) topFrame.show()
def layout(self): frame = QFrame() frame.setFrameShape(QFrame.StyledPanel) self.__layout = QVBoxLayout() self.__layout.addLayout(self.__setting_box) self.__layout.addLayout(self.__statistics_box) self.__layout.addStretch(1) self.__layout.setSpacing(10) frame.setLayout(self.__layout) frame.setMaximumSize(560, 126) layout = QVBoxLayout() layout.addWidget(frame) return layout
def _draw_article(self, layout, article: Article) -> QWidget: article_widget = QFrame() article_widget.setMinimumSize(400, 55) article_widget.setMaximumSize(400, 55) article_widget.setStyleSheet( "QFrame {background-color: rgb(200,200,200);}") article_insides = QHBoxLayout() article_widget.setLayout(article_insides) title_and_url_layout = QVBoxLayout() title = QLabel(cutoff_string(article.name, 50)) title.setAlignment(QtCore.Qt.AlignLeft | QtCore.Qt.AlignTop) title.setMaximumSize(270, 20) title.setMinimumSize(270, 20) title_and_url_layout.addWidget(title) url = QLabel(cutoff_string(article.url, 50)) url.setAlignment(QtCore.Qt.AlignLeft | QtCore.Qt.AlignBottom) url.setMaximumSize(270, 20) url.setMinimumSize(270, 20) title_and_url_layout.addWidget(url) title_and_url_layout.addSpacerItem( QSpacerItem(40, 40, QSizePolicy.MinimumExpanding)) reading_time_layout = QVBoxLayout() add_spacer(reading_time_layout) read_time = QLabel("{} minutes".format(article.reading_time)) read_time.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignTop) read_time.setMaximumSize(100, 15) read_time.setMinimumSize(100, 15) reading_time_layout.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignTop) reading_time_layout.addWidget(read_time) reading_time_layout.addSpacerItem( QSpacerItem(1, 40, QSizePolicy.MinimumExpanding)) article_insides.addLayout(title_and_url_layout) article_insides.addLayout(reading_time_layout) layout.addWidget(article_widget) return article_widget
def genBuilds(self): scBuilds = QScrollArea() scBuilds.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) scBuilds.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn) scBuildsVLB = QVBoxLayout() for i in reversed(range(scBuildsVLB.count())): scBuildsVLB.itemAt(i).widget().setParent(None) for language in c.execute("SELECT languageName FROM languages ORDER BY languageName ASC"): gb = QGroupBox(language[0]) gb.setMinimumSize(360, 50) gb.setMaximumWidth(360) vlb = QVBoxLayout() vlb.setContentsMargins(3,3,3,3) vlb.setSpacing(3) c1 = conn.cursor() for build in c1.execute("SELECT * FROM builds WHERE buildLanguage = ?", (language[0],)): print(build) frame = QFrame() hlb = QHBoxLayout() frame.setMaximumSize(360, 20) hlb.setContentsMargins(5,0,0,0) hlb.setSpacing(6) btnBuild = QPushButton("Build") btnBuild.setMaximumSize(50, 20) btnBuild.clicked.connect(lambda checked, buildID=build[0]: self.runBuild(buildID)) lblBuildName = QLabel(build[1]) lblBuildName.setMaximumSize(233,20) lblBuildLanguage = QLabel(build[2]) lblBuildLanguage.setMaximumSize(60, 20) hlb.addWidget(lblBuildName) hlb.addWidget(lblBuildLanguage) hlb.addWidget(btnBuild) frame.setLayout(hlb) vlb.addWidget(frame) gb.setLayout(vlb) scBuildsVLB.addWidget(gb) scBuildsVLB.addStretch() scBuilds.setLayout(scBuildsVLB) self.Main.uiMain.gridLayout_2.addChildWidget(scBuilds)
def decorate(splitter: QSplitter, index: int = 1): gripLength = 35 gripWidth = 1 # may need to be 1 or 2 depending on theme gripSpacing = 0 grips = 3 splitter.setOpaqueResize(False) splitter.setChildrenCollapsible(False) splitter.setHandleWidth(7) handle = splitter.handle(index) orientation = splitter.orientation() layout = QHBoxLayout(handle) layout.setSpacing(gripSpacing) layout.setContentsMargins(0, 0, 0, 0) if orientation == Qt.Horizontal: for i in range(grips): line = QFrame(handle) line.setMinimumSize(gripWidth, gripLength) line.setMaximumSize(gripWidth, gripLength) line.setLineWidth(gripWidth) line.setFrameShape(line.StyledPanel) line.setStyleSheet("border: 1px solid lightgray;") layout.addWidget(line) else: # center the vertical grip by adding spacers before and after layout.addStretch() vBox = QVBoxLayout() for i in range(grips): line = QFrame(handle) line.setMinimumSize(gripLength, gripWidth) line.setMaximumSize(gripLength, gripWidth) line.setFrameShape(line.StyledPanel) line.setStyleSheet("border: 1px solid lightgray;") vBox.addWidget(line) layout.addLayout(vBox) layout.addStretch()
def _create_style_view(self, style_path, path_to_icon, style_name): pixmap = self._read_input_pixmap(path_to_icon) if pixmap is not None: # create a scene which will handle the graphical image scene = QGraphicsScene(self) scene.addPixmap(pixmap) # create the the widget which will display the image graphics_view = SelectableGraphicsView(scene, self, style_path, path_to_icon) # set its maximum size to 100 by 100 pixels graphics_view.setMaximumSize(QSize(90, 90)) # set the size policy to fixed so the widgets wont change their size size_policy = QSizePolicy() size_policy.setHorizontalPolicy(QSizePolicy.Fixed) size_policy.setVerticalPolicy(QSizePolicy.Fixed) graphics_view.setSizePolicy(size_policy) # disable the scrollbars for the graphics view graphics_view.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) graphics_view.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff) # display the widget with a label indicating the stlye name frame = QFrame(self.ui.scrollArea) vertical_layout = QVBoxLayout(frame) frame.setLayout(vertical_layout) frame.setMaximumSize(QSize(120, 150)) vertical_layout.addWidget(graphics_view) title_label = QLabel(style_name, frame) title_label.setAlignment(Qt.AlignHCenter) vertical_layout.addWidget(title_label) self.ui.horizontalLayout_2.addWidget(frame) # connect the signal and slots graphics_view.on_focus.connect(self._style_selector) return graphics_view
def createBox(self): box = QFrame(self) #box.setMinimumSize(self.width(), self.height()/3) box.setMaximumSize(self.width(), self.height() / 3) box.setStyleSheet("background-color:yellow") box.setAutoFillBackground(True) box.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed) box.setStyleSheet("background-color:#f5f5ef") box.setFrameShape(QFrame.Box) font = QFont("Times new roman", 15) layout = QVBoxLayout(box) layout.setContentsMargins(5, 0, 0, 5) date = QLabel('', box) date.setObjectName('date') date.setFont(font) date.setStyleSheet("font-weight: bold;") name = QLabel('', box) name.setObjectName('name') name.setFont(font) layout.addWidget(date) layout.addWidget(name) layout.setAlignment(date, Qt.AlignTop) layout.setAlignment(name, Qt.AlignBottom) box.setLayout(layout) self.layout.addWidget(box) #layout.setAlignment(box,Qt.AlignTop) box.hide() return box
class Registered: def __init__(self, form_base_layout: QFormLayout): super(Registered, self).__init__() self.form_base_layout: QFormLayout = form_base_layout def setup_ui(self, containers: QFrame, plugins: Any): # parent_unregistered_frame self.parent_registered_frame = QFrame(containers) self.parent_registered_frame.setFrameShape(QFrame.StyledPanel) self.parent_registered_frame.setFrameShadow(QFrame.Raised) self.parent_registered_frame.setContentsMargins(0, 45, 0, 0) # parent_vl_unregistered_frame self.parent_vl_registered_frame = QVBoxLayout( self.parent_registered_frame) self.parent_vl_registered_frame.setContentsMargins(30, 30, 30, 30) self.parent_vl_registered_frame.setObjectName("vl_registered_frame") # registered_frame self.registered_frame = QFrame(self.parent_registered_frame) self.registered_frame.setMinimumSize(QSize(0, 500)) self.registered_frame.setMaximumSize(QSize(16777215, 16777215)) self.registered_frame.setObjectName( RegisteredStyles.registered_frame_style[0]) self.registered_frame.setStyleSheet( RegisteredStyles.registered_frame_style[1]) self.registered_frame.setFrameShape(QFrame.StyledPanel) self.registered_frame.setLayoutDirection(Qt.LeftToRight) self.registered_frame.setFrameShadow(QFrame.Raised) # vl_registered_frame self.vl_registered_frame = QVBoxLayout(self.registered_frame) self.vl_registered_frame.setContentsMargins(30, 30, 30, 30) self.vl_registered_frame.setObjectName("vl_registered_frame") # Add ScrollView self.scroll_area = QScrollArea(self.registered_frame) self.scroll_area.setObjectName(RegisteredStyles.scroll_area_style[0]) self.scroll_area.setStyleSheet(RegisteredStyles.scroll_area_style[1]) self.scroll_area.setWidgetResizable(True) self.scroll_area_contents = QWidget() self.scroll_area_contents.setGeometry(QRect(0, 0, 1080, 344)) self.scroll_area_contents.setObjectName( "scroll_area_contents_page_containers") # Add Vlayout ScroolView self.vlayout_scroll_view = QVBoxLayout(self.scroll_area_contents) self.vlayout_scroll_view.setObjectName("vlayout_scroll_view") # frame_containers_items_registered self.frame_containers_items_registered = QFrame( self.scroll_area_contents) self.frame_containers_items_registered.setFrameShape( QFrame.StyledPanel) self.frame_containers_items_registered.setFrameShadow(QFrame.Raised) self.frame_containers_items_registered.setObjectName( "frame_containers_items_registered") self.vl_registered_frame.addWidget( self.frame_containers_items_registered) self.regestered_frame_gridLayout = QGridLayout( self.frame_containers_items_registered) self.regestered_frame_gridLayout.setSpacing(24) self.regestered_frame_gridLayout.setObjectName( "regestered_frame_gridLayout") # lbl_registered self.lbl_registered = QLabel(self.parent_registered_frame) self.lbl_registered.setGeometry(QRect(75, 15, 141, 32)) # self.lbl_registered.setMinimumSize(QSize(91, 32)) # self.lbl_registered.setObjectName(RegisteredStyles.lbl_registered_style[0]) # self.lbl_registered.setStyleSheet(RegisteredStyles.lbl_registered_style[1]) # self.lbl_registered.setAlignment(Qt.AlignCenter) # self.lbl_registered.setText("REGISTERED") start_index = box_primitive().create_box( containers=self.frame_containers_items_registered, frame_gridLayout=self.regestered_frame_gridLayout, plugins=plugins) # box_primitive().create_box( # containers=self.frame_containers_items_registered, count_box=5, # start_index=start_index, frame_gridLayout=self.regestered_frame_gridLayout, # box_type=False # ) del start_index self.vlayout_scroll_view.addWidget( self.frame_containers_items_registered, 0, Qt.AlignLeft) self.scroll_area.setWidget(self.scroll_area_contents) self.vl_registered_frame.addWidget(self.scroll_area) self.parent_vl_registered_frame.addWidget(self.registered_frame) self.form_base_layout.setWidget(1, QFormLayout.SpanningRole, self.parent_registered_frame)
class App(QMainWindow): """ The UI App class Pass an instance into your IFPGame object """ def __init__(self): """ Initialize the GUI Styling for the Qt GUI is also defined in here. Feel free to change and adapt it as you see fit. """ super().__init__() # self.icon = None # self.setWindowIcon(QIcon(self.icon)) self.setObjectName("MainWindow") self.title = "IntFicPy" self.left = 10 self.top = 10 self.width = 640 self.height = 480 self.box_style1 = ("color: black; " "background-color: #d3e56b; " "border: none; " "border-radius:20px; " "margin-bottom: 15px") self.box_style2 = ("color: black; " "background-color: #6be5cb; " "border: none; " "border-radius:20px; " "margin-bottom: 15px") self.scroll_style = """ /* VERTICAL */ QWidget { background: #efefef; } QScrollBar:vertical { border: none; background: #a3a3a3; border-radius: 6px; width: 30px; margin: 10px 8px 10px 8px; } QScrollBar::handle:vertical { background: #d0d0d0; border-radius: 6px; min-height: 15px; } QScrollBar::add-line:vertical { background: none; height: 10px; subcontrol-position: bottom; subcontrol-origin: margin; } QScrollBar::sub-line:vertical { background: none; height: 10px; subcontrol-position: top left; subcontrol-origin: margin; position: absolute; } QScrollBar:up-arrow:vertical, QScrollBar::down-arrow:vertical { background: none; } QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical { background: none; } """ self.initUI() self.showMaximized() self.game = None def initUI(self): """ Build the basic user interface """ self.setWindowTitle(self.title) self.setGeometry(self.left, self.top, self.width, self.height) # self.widget.resize(self.width, self.height) # self.widget.setLayout(self.main_layout) # Container Widget self.widget = QWidget() self.setCentralWidget(self.widget) self.main_layout = QVBoxLayout() self.widget.setLayout(self.main_layout) # TextBox self.textbox = QLineEdit() self.textbox.resize(280, 30) # Scroll Area Properties self.scroll_container = QWidget() self.scroll_container_layout = QVBoxLayout(self.scroll_container) self.scroll_widget = QWidget() self.scroll_widget_layout = QVBoxLayout() self.scroll_widget_layout.setContentsMargins(15, 15, 15, 30) self.scroll_widget.setLayout(self.scroll_widget_layout) self.scroll = QScrollArea() self.scroll.setFrameShape(QFrame.Box) self.scroll.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn) self.scroll.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) self.scroll.setWidgetResizable(True) self.scroll.setWidget(self.scroll_widget) self.scroll_container_layout.addWidget(self.scroll) self.scroll_widget_layout.setAlignment(QtCore.Qt.AlignTop) self.main_layout.addWidget(self.scroll_container) self.main_layout.addWidget(self.textbox) self.main_layout.setContentsMargins(10, 10, 10, 10) self.scroll_container.setStyleSheet(self.scroll_style) self.cutscene = [] self.anykeyformore = False def send_turn_input(self): """ Send player input to the game, and clear the input field """ textboxValue = self.textbox.text() self.textbox.setText("") self.game.turnMain(textboxValue) def keyPressEvent(self, event): """ Handle key press events Enter - send turn input Up - move backward through command history Down - move forward through command history """ if event.key() == QtCore.Qt.Key_Up: self.textbox.setText(self.game.getCommandUp()) elif event.key() == QtCore.Qt.Key_Down: self.textbox.setText(self.game.getCommandDown()) elif event.key() == QtCore.Qt.Key_Return and len( self.textbox.text()) > 0: self.send_turn_input() def printEventText(self, event): """ Prints game output to the GUI, and scrolls down Takes a single argument event, the event to print """ self.obox = QFrame() self.obox.setFrameStyle(QFrame.StyledPanel) self.obox.setStyleSheet(event.style) self.scroll_widget_layout.addWidget(self.obox) self.olayout = QVBoxLayout() self.obox.setLayout(self.olayout) for t in event.text: out = QLabel() out.setText(t) self.olayout.addWidget(out) out.setWordWrap(True) out.setStyleSheet("margin-bottom: 5px") out.setMaximumSize(out.sizeHint()) out.setMinimumSize(out.sizeHint()) self.obox.setMaximumSize(self.obox.sizeHint()) self.obox.setMinimumSize(self.obox.sizeHint()) vbar = self.scroll.verticalScrollBar() vbar.rangeChanged.connect(lambda: vbar.setValue(vbar.maximum())) def saveFilePrompt(self, extension, filetype_desc, msg): """ Create a prompt to save a file Used for saving the game, and creating recordings """ cwd = os.getcwd() fname = QFileDialog.getSaveFileName(self, msg, cwd, f"{filetype_desc} (*{extension})") fname = fname[0] if len(fname) == 0: return None if fname.endswith(extension): return fname if "." in fname: fname = fname[:fname.index(".")] return fname + extension def openFilePrompt(self, extension, filetype_desc, msg): """ Create a prompt to open a file Used for loading save files and playing back recordings """ cwd = os.getcwd() fname = QFileDialog.getOpenFileName(self, msg, cwd, f"{filetype_desc} (*{extension})") if not fname[0].endswith(extension): return None return fname[0]
class ExportAnimPanel(QVBoxLayout): def __init__(self, parent=None): super().__init__(parent) self.previewImage = None self.parent = parent self.base_path = settings.ROOT self.screenshot = None self.createWidget() def createWidget(self): #self.mainLayout = QVBoxLayout() self.setContentsMargins(12, 6, 6, 6) self.setSpacing(8) self.previewImagePanel = QFrame() self.previewImageLayout = QVBoxLayout() self.previewImagePanel.setLayout(self.previewImageLayout) self.previewImagePanel.setMinimumSize(230, 230) self.previewImagePanel.setMaximumSize(230, 230) #self.previewImage.setSizePolicy(QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred)) self.previewImagePanel.setStyleSheet( "border-style : dashed;border-width : 2px; border-color:rgb(60,60,60);background-color : rgb(100,100,100);" ) self.previewImageLayout.setContentsMargins(0, 0, 0, 0) #self.previewImageLayout.setSpacing(0) # Action Name self.actionName = LineEdit() self.actionNameLayout = QHBoxLayout() self.actionNameLayout.addWidget(Label(text='Name :')) self.actionNameLayout.addWidget(self.actionName) # Category Name self.model = QStringListModel() self.model.setStringList(['pose', 'mains', 'expressions', 'cycle']) self.cat_completer = QCompleter() self.cat_completer.setCompletionMode( QCompleter.UnfilteredPopupCompletion) self.cat_completer.setModel(self.model) self.categoryName = LineEdit() self.categoryName.setCompleter(self.cat_completer) self.categoryNameLayout = QHBoxLayout() self.categoryNameLayout.addWidget(Label(text='Category :')) self.categoryNameLayout.addWidget(self.categoryName) # Frame Range self.frameRangeLayout = QHBoxLayout() self.frameRangeIn = SpinBox() self.frameRangeIn.setValue(bpy.context.scene.frame_current) self.frameRangeIn.setMaximum(10000) self.frameRangeIn.valueChanged.connect(lambda: self.update_number()) self.frameRangeOut = SpinBox() self.frameRangeOut.setValue(bpy.context.scene.frame_current) self.frameRangeOut.setMaximum(10000) self.frameRangeOut.valueChanged.connect(lambda: self.update_number()) self.frameRangeLayout.addWidget(Label(text='Frame Range :')) self.frameRangeLayout.addWidget(self.frameRangeIn) self.frameRangeLayout.addWidget(self.frameRangeOut) #animation_step self.animationSettingsLayout = QHBoxLayout() self.step = SpinBox() self.step.setValue(2) self.step.setMinimum(1) self.step.valueChanged.connect(lambda: self.update_number()) self.imgNumber = Label() self.imgNumber.setText(self.update_number()) self.animationSettingsLayout.addWidget(Label(text='Step :')) self.animationSettingsLayout.addWidget(self.step) self.animationSettingsLayout.addWidget(Label(text='Number:')) self.animationSettingsLayout.addWidget(self.imgNumber) #option self.optionLayout = QHBoxLayout() self.only_selected = CheckBox('Selected Only') self.bezier = CheckBox('Bezier') self.mirror_pose = CheckBox('Mirror Pose') self.optionLayout.addWidget(self.only_selected) self.optionLayout.addWidget(self.bezier) self.optionLayout.addWidget(self.mirror_pose) # tools layout self.toolsLayout = QHBoxLayout() horizontalSpacer = QSpacerItem(128, 20, QSizePolicy.Expanding, QSizePolicy.Minimum) verticalSpacer = QSpacerItem(20, 16, QSizePolicy.Minimum, QSizePolicy.Expanding) self.toolsLayout.addItem(horizontalSpacer) #thumbnail button self.btn_thumbnail = PushButton(icon=icon_path('ICON_RENDER_REGION'), size=[24, 24]) self.btn_thumbnail.clicked.connect(self.set_thumbnail) #ok_button self.btn_ok = PushButton(text='OK') self.btn_ok.clicked.connect(self.ok) #cancel_button self.btn_cancel = PushButton(text='Cancel') self.btn_cancel.clicked.connect(self.cancel) self.toolsLayout.addWidget(self.btn_thumbnail) self.toolsLayout.addWidget(self.btn_ok) self.toolsLayout.addWidget(self.btn_cancel) # Adding layout to main Widget self.addWidget(self.previewImagePanel) self.addLayout(self.actionNameLayout) self.addLayout(self.categoryNameLayout) self.addLayout(self.frameRangeLayout) self.addLayout(self.animationSettingsLayout) self.addLayout(self.optionLayout) self.addItem(verticalSpacer) self.addLayout(self.toolsLayout) def update_number(self): img_frame = round( (int(self.frameRangeOut.text()) - int(self.frameRangeIn.text())) / int(self.step.text())) self.imgNumber.setText(str(img_frame)) def ok(self): path = os.path.join(self.base_path, self.asset, self.categoryName.text(), self.actionName.text()) thumb_path = os.path.join(path, self.actionName.text() + '_thumbnail.jpg') action = store_anim(int(self.frameRangeIn.text()), int(self.frameRangeOut.text()), self.only_selected.isChecked(), self.bezier.isChecked(), self.mirror_pose.isChecked()) write_anim(path, self.actionName.text(), action) description = open( os.path.join(path, self.actionName.text() + '_description.txt'), 'w') if self.previewImage.pixmap(): self.previewImage.pixmap().save(thumb_path, 'jpg', 75) def cancel(self): bar = TitleBar(parent=self.parent) TitleBar.show() ('print cancel') def show_completion(self): self.setPopup(QAbstractItemView()) def set_thumbnail(self): active_ob = bpy.context.scene.objects.active clear_layout(self.previewImageLayout) ''' #for all 3d view show only render set to true view_settings={} view_settings['VIEW_3D'] = {} view_settings['bg_color'] = bpy.context.user_preferences.themes['Default'].view_3d.space.gradients.high_gradient bpy.context.user_preferences.themes['Default'].view_3d.space.gradients.high_gradient = (0.5,0.5,0.5) for index,area in enumerate(bpy.context.window_manager.windows[0].screen.areas) : if area.type == 'VIEW_3D' : only_render = area.spaces[0].show_only_render world = area.spaces[0].show_world view_settings['VIEW_3D'][index] = [only_render,world] area.spaces[0].show_only_render = True area.spaces[0].show_world = True ''' main = Rubb(parent=self.parent) main.fullScreenLabel.show() if active_ob and active_ob.type == 'ARMATURE': if active_ob.proxy_group: self.asset = active_ob.proxy_group.name else: self.asset = active_ob.name
class TopNavigationBarContainers(GUIObserver): def on_message(self, message: dict): self.location_box.setText(str(message["data"]["value"]).split('-')[2]) @property def class_name(self): return GUIClassNames.TOP_NAVIGATION_BAR_CONTAINERS def __init__(self, gui_concentrate_handler): gui_concentrate_handler.attach(self) super(TopNavigationBarContainers, self).__init__() def setup_ui(self, containers: QFrame, main_gridLayout: QGridLayout): self.frame_location_box = QFrame(containers) self.frame_location_box.setFrameShape(QFrame.StyledPanel) self.frame_location_box.setFrameShadow(QFrame.Raised) self.frame_location_box.setObjectName("frame_location_box") self.vlayout_location_box = QVBoxLayout(self.frame_location_box) self.vlayout_location_box.setContentsMargins(0, 0, 71, 0) self.vlayout_location_box.setObjectName("vlayout_location_box") self.location_box = QLabel(self.frame_location_box) self.location_box.setText("MainPage") self.location_box.setCursor(QCursor(Qt.PointingHandCursor)) self.location_box.setObjectName(TopNavigationBarContainersStyles.location_box_style[0]) self.location_box.setStyleSheet(TopNavigationBarContainersStyles.location_box_style[1]) self.location_box.setAlignment(Qt.AlignCenter) self.location_box.setOpenExternalLinks(False) sizePolicy = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.location_box.sizePolicy().hasHeightForWidth()) self.location_box.setSizePolicy(sizePolicy) self.location_box.setMinimumSize(QSize(370, 33)) self.location_box.setMaximumSize(QSize(370, 33)) del sizePolicy self.vlayout_location_box.addWidget(self.location_box, 0, Qt.AlignHCenter) main_gridLayout.addWidget(self.frame_location_box, 0, 2, 1, 1) self.components_frame = QFrame(containers) self.components_frame.setMinimumSize(QSize(181, 51)) self.components_frame.setMaximumSize(QSize(181, 51)) self.components_frame.setFrameShape(QFrame.StyledPanel) self.components_frame.setFrameShadow(QFrame.Raised) self.components_frame.setObjectName("components_frame") self.item_user = QLabel(self.components_frame) self.item_user.setGeometry(QRect(0, 10, 34, 34)) self.item_user.setCursor(QCursor(Qt.PointingHandCursor)) self.item_user.setAccessibleName(TopNavigationBarContainersStyles.item_notification_style[0]) self.item_user.setStyleSheet(TopNavigationBarContainersStyles.item_notification_style[1]) self.item_user.setPixmap(QPixmap(AppPaths.GUI_ASSETS_ICONS_PATH + "/main_window/user_logo.svg")) self.item_user.setAlignment(Qt.AlignCenter) self.item_user.setObjectName("item_user") self.item_message = QLabel(self.components_frame) self.item_message.setObjectName("item_message") self.item_message.setStyleSheet(TopNavigationBarContainersStyles.item_notification_style[1]) self.item_message.setGeometry(QRect(95, 10, 34, 34)) self.item_message.setCursor(QCursor(Qt.PointingHandCursor)) self.item_message.setPixmap(QPixmap(AppPaths.GUI_ASSETS_ICONS_PATH + "/main_window/message_logo.svg")) self.item_message.setAlignment(Qt.AlignCenter) self.item_notification = QLabel(self.components_frame) self.item_notification.setGeometry(QRect(47, 10, 34, 34)) self.item_notification.setCursor(QCursor(Qt.PointingHandCursor)) self.item_notification.setAccessibleName(TopNavigationBarContainersStyles.item_notification_style[0]) self.item_notification.setStyleSheet(TopNavigationBarContainersStyles.item_notification_style[1]) self.item_notification.setPixmap(QPixmap(AppPaths.GUI_ASSETS_ICONS_PATH + "/main_window/notification_logo.svg")) self.item_notification.setAlignment(Qt.AlignCenter) self.item_notification.setObjectName("item_notification") self.item_search = QLabel(self.components_frame) self.item_search.setObjectName("item_search") self.item_search.setGeometry(QRect(142, 10, 34, 34)) self.item_search.setCursor(QCursor(Qt.PointingHandCursor)) self.item_search.setAccessibleName(TopNavigationBarContainersStyles.item_notification_style[0]) self.item_search.setStyleSheet(TopNavigationBarContainersStyles.item_notification_style[1]) self.item_search.setPixmap(QPixmap(AppPaths.GUI_ASSETS_ICONS_PATH + "/main_window/search_logo.svg")) self.item_search.setAlignment(Qt.AlignCenter) self.lbl_number_of_message = QLabel(self.components_frame) self.lbl_number_of_message.setGeometry(QRect(110, 5, 31, 26)) self.lbl_number_of_message.setText("+25") self.lbl_number_of_message.setAlignment(Qt.AlignCenter) self.lbl_number_of_message.setObjectName(TopNavigationBarContainersStyles.notify_number_of_box_style[0]) self.lbl_number_of_message.setStyleSheet(TopNavigationBarContainersStyles.notify_number_of_box_style[1]) self.lbl_number_of_notification = QLabel(self.components_frame) self.lbl_number_of_notification.setGeometry(QRect(60, 5, 31, 26)) self.lbl_number_of_notification.setText("+99") self.lbl_number_of_notification.setAlignment(Qt.AlignCenter) self.lbl_number_of_notification.setObjectName(TopNavigationBarContainersStyles.notify_number_of_box_style[0]) self.lbl_number_of_notification.setStyleSheet(TopNavigationBarContainersStyles.notify_number_of_box_style[1]) main_gridLayout.addWidget(self.components_frame, 0, 0, 1, 1)
class AddAsset(QVBoxLayout): def __init__(self, parent=None): super().__init__(parent) self.previewImage = None self.parent = parent self.screenshot = None self.createWidget() def createWidget(self): #self.mainLayout = QVBoxLayout() self.setContentsMargins(12, 6, 6, 6) self.setSpacing(8) self.mainLayout = QVBoxLayout() #asset Type Choice self.assetType = ComboBox() self.assetType.currentIndexChanged.connect(self.set_layout) self.assetType.setSizePolicy( QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed)) self.assetType.setStyleSheet(get_css("ComboBoxAsset")) for item, info in sorted(self.parent.asset_type.items()): self.assetType.addItem(QIcon(info['icon']), item.title().replace('_', ' ')) self.assetTypeLayout = QHBoxLayout() self.assetTypeLayout.addWidget(Label(text='Type :')) self.assetTypeLayout.addWidget(self.assetType) self.addLayout(self.assetTypeLayout) self.addLayout(self.mainLayout) def set_layout(self): from .. import asset_managing as asset_managing assetType = self.assetType.currentText().lower().replace(' ', '_') store_func = self.parent.asset_type[assetType]['store'] + '_settings' module = getattr(asset_managing, assetType) clear_layout(self.mainLayout) print(self.assetType.currentText()) self.previewImagePanel = QFrame() self.previewImageLayout = QVBoxLayout() self.previewImagePanel.setLayout(self.previewImageLayout) self.previewImagePanel.setMinimumSize(230, 230) self.previewImagePanel.setMaximumSize(230, 230) #self.previewImage.setSizePolicy(QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred)) self.previewImagePanel.setStyleSheet( "border-style : dashed;border-width : 2px; border-color:rgb(60,60,60);background-color : rgb(100,100,100);" ) self.previewImageLayout.setContentsMargins(0, 0, 0, 0) #self.previewImageLayout.setSpacing(0) # Asset Name self.assetName = LineEdit() self.assetNameRow = QHBoxLayout() self.assetNameRow.addWidget(Label(text='Name :')) self.assetNameRow.addWidget(self.assetName) # Category Completion #self.model = QStringListModel() #self.model.setStringList(['pose','mains','expressions','cycle']) #self.cat_completer = QCompleter() #self.cat_completer.setCompletionMode(QCompleter.UnfilteredPopupCompletion) #self.cat_completer.setModel(self.model) # Category Name self.assetCategory = LineEdit() self.assetCategoryRow = QHBoxLayout() self.assetCategoryRow.addWidget(Label(text='Category :')) self.assetCategoryRow.addWidget(self.assetCategory) # tag List self.assetTags = LineEdit() self.assetTagsRow = QHBoxLayout() self.assetTagsRow.addWidget(Label(text='Tags :')) self.assetTagsRow.addWidget(self.assetTags) # Description self.assetDescription = QPlainTextEdit() self.assetDescription.setStyleSheet(get_css('LineEdit')) self.assetDescriptionRow = QHBoxLayout() self.assetDescriptionRow.addWidget(Label(text='Description :')) self.assetDescriptionRow.addWidget(self.assetDescription) # Adding layout to main Widget self.mainLayout.addWidget(self.previewImagePanel) self.mainLayout.addLayout(self.assetNameRow) self.mainLayout.addLayout(self.assetCategoryRow) self.mainLayout.addLayout(self.assetTagsRow) self.mainLayout.addLayout(self.assetDescriptionRow) #add settings per Asset type #getattr(asset_storing, store_func)(self) getattr(module, store_func)(self) # tools layout self.toolsLayout = QHBoxLayout() horizontalSpacer = QSpacerItem(128, 20, QSizePolicy.Expanding, QSizePolicy.Minimum) verticalSpacer = QSpacerItem(20, 16, QSizePolicy.Minimum, QSizePolicy.Expanding) self.toolsLayout.addItem(horizontalSpacer) #thumbnail button self.btn_thumbnail = PushButton(icon=icon_path('ICON_RENDER_REGION'), size=[24, 24]) self.btn_thumbnail.clicked.connect(self.set_thumbnail) #ok_button self.btn_ok = PushButton(text='OK') self.btn_ok.clicked.connect(self.ok) #cancel_button self.btn_cancel = PushButton(text='Cancel') self.btn_cancel.clicked.connect(self.cancel) self.toolsLayout.addWidget(self.btn_thumbnail) self.toolsLayout.addWidget(self.btn_ok) #self.toolsLayout.addWidget(self.btn_cancel) self.mainLayout.addItem(verticalSpacer) self.mainLayout.addLayout(self.toolsLayout) def update_number(self): img_frame = round( (int(self.frameRangeOut.text()) - int(self.frameRangeIn.text())) / int(self.step.text())) self.imgNumber.setText(str(img_frame)) def ok(self): from .. import asset_managing as asset_managing assetType = self.assetType.currentText().lower().replace(' ', '_') store_func = self.parent.asset_type[assetType]['store'] module = getattr(asset_managing, assetType) getattr(module, store_func)(self) #store_func = settings['item_type'][assetType]['store'] #getattr(asset_storing, store_func)(self) #store_func(self) def cancel(self): bar = TitleBar(parent=self.parent) TitleBar.show() ('print cancel') def show_completion(self): self.setPopup(QAbstractItemView()) def set_thumbnail(self): active_ob = bpy.context.scene.objects.active clear_layout(self.previewImageLayout) ''' #for all 3d view show only render set to true view_settings={} view_settings['VIEW_3D'] = {} view_settings['bg_color'] = bpy.context.user_preferences.themes['Default'].view_3d.space.gradients.high_gradient bpy.context.user_preferences.themes['Default'].view_3d.space.gradients.high_gradient = (0.5,0.5,0.5) for index,area in enumerate(bpy.context.window_manager.windows[0].screen.areas) : if area.type == 'VIEW_3D' : only_render = area.spaces[0].show_only_render world = area.spaces[0].show_world view_settings['VIEW_3D'][index] = [only_render,world] area.spaces[0].show_only_render = True area.spaces[0].show_world = True ''' main = Rubb(parent=self.parent) main.fullScreenLabel.show() if active_ob and active_ob.type == 'ARMATURE': if active_ob.proxy_group: self.asset = active_ob.proxy_group.name else: self.asset = active_ob.name
class Ui_MainWindow(object): def setupUi(self, main_window): main_window.setObjectName("mainWindow") main_window.resize(1024, 768) main_window.setMinimumSize(QSize(1024, 768)) main_window.setToolButtonStyle(Qt.ToolButtonIconOnly) self.central_widget = QWidget(main_window) self.central_widget.setObjectName("central_widget") self.horizontalLayout = QHBoxLayout(self.central_widget) self.horizontalLayout.setObjectName("horizontalLayout") self.topDownSplitter = QSplitter(self.central_widget) self.topDownSplitter.setOrientation(Qt.Vertical) self.topDownSplitter.setOpaqueResize(True) self.topDownSplitter.setHandleWidth(5) self.topDownSplitter.setObjectName("topDownSplitter") self.leftRightSplitter = QSplitter(self.topDownSplitter) self.leftRightSplitter.setOrientation(Qt.Horizontal) self.leftRightSplitter.setObjectName("leftRightSplitter") self.leftPanel = QFrame(self.leftRightSplitter) sizePolicy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.leftPanel.sizePolicy().hasHeightForWidth()) self.leftPanel.setSizePolicy(sizePolicy) self.leftPanel.setMinimumSize(QSize(245, 550)) self.leftPanel.setMaximumSize(QSize(245, 16777215)) self.leftPanel.setFrameShape(QFrame.StyledPanel) self.leftPanel.setFrameShadow(QFrame.Raised) self.leftPanel.setObjectName("leftPanel") self.leftPanelVLayout = QVBoxLayout(self.leftPanel) self.leftPanelVLayout.setObjectName("leftPanelVLayout") self.colorPickerFrame = QFrame(self.leftPanel) self.colorPickerFrame.setMinimumSize(QSize(0, 0)) self.colorPickerFrame.setMaximumSize(QSize(16777215, 16777215)) self.colorPickerFrame.setFrameShape(QFrame.StyledPanel) self.colorPickerFrame.setFrameShadow(QFrame.Raised) self.colorPickerFrame.setObjectName("colorPickerFrame") self.leftPanelVLayout.addWidget(self.colorPickerFrame) self.leftPanelVLayout.setStretch(0, 5) self.mainPanel = QFrame(self.leftRightSplitter) sizePolicy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(1) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.mainPanel.sizePolicy().hasHeightForWidth()) self.mainPanel.setSizePolicy(sizePolicy) self.mainPanel.setMinimumSize(QSize(320, 240)) self.mainPanel.setAutoFillBackground(False) self.mainPanel.setFrameShape(QFrame.StyledPanel) self.mainPanel.setFrameShadow(QFrame.Raised) self.mainPanel.setObjectName("mainPanel") self.verticalLayout = QVBoxLayout(self.mainPanel) self.verticalLayout.setObjectName("verticalLayout") self.canvasFrame = QFrame(self.mainPanel) sizePolicy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.canvasFrame.sizePolicy().hasHeightForWidth()) self.canvasFrame.setSizePolicy(sizePolicy) self.canvasFrame.setMinimumSize(310, 230) self.canvasFrame.setFrameShape(QFrame.StyledPanel) self.canvasFrame.setFrameShadow(QFrame.Raised) self.canvasFrame.setObjectName("canvasFrame") self.verticalLayout.addWidget(self.canvasFrame) self.verticalLayout.setStretch(0, 12) self.rightPanel = QFrame(self.leftRightSplitter) sizePolicy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.rightPanel.sizePolicy().hasHeightForWidth()) self.rightPanel.setSizePolicy(sizePolicy) self.rightPanel.setMinimumSize(QSize(245, 550)) self.rightPanel.setMaximumSize(QSize(340, 16777215)) self.rightPanel.setFrameShape(QFrame.StyledPanel) self.rightPanel.setFrameShadow(QFrame.Raised) self.rightPanel.setObjectName("rightPanel") self.rightPanelLayout = QVBoxLayout(self.rightPanel) self.rightPanelLayout.setObjectName("rightPanelLayout") self.previewFrame = QFrame(self.rightPanel) self.previewFrame.setMaximumSize(320, 500) self.previewFrame.setFrameShape(QFrame.StyledPanel) self.previewFrame.setFrameShadow(QFrame.Raised) self.previewFrame.setObjectName("previewFrame") self.rightPanelLayout.addWidget(self.previewFrame) self.layerListFrame = QFrame(self.rightPanel) self.layerListFrame.setFrameShape(QFrame.StyledPanel) self.layerListFrame.setFrameShadow(QFrame.Raised) self.layerListFrame.setObjectName("layerListFrame") self.rightPanelLayout.addWidget(self.layerListFrame) self.animationBarFrame = QFrame(self.topDownSplitter) sizePolicy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.animationBarFrame.sizePolicy().hasHeightForWidth()) self.animationBarFrame.setSizePolicy(sizePolicy) self.animationBarFrame.setMinimumSize(QSize(600, 100)) self.animationBarFrame.setMaximumSize(QSize(16777215, 100)) self.animationBarFrame.setFrameShape(QFrame.StyledPanel) self.animationBarFrame.setFrameShadow(QFrame.Raised) self.animationBarFrame.setObjectName("animationBarFrame") self.horizontalLayout.addWidget(self.topDownSplitter) main_window.setCentralWidget(self.central_widget) self.toolBar = QToolBar(main_window) sizePolicy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.toolBar.sizePolicy().hasHeightForWidth()) self.toolBar.setSizePolicy(sizePolicy) self.toolBar.setMovable(False) self.toolBar.setFloatable(False) self.toolBar.setObjectName("toolBar") main_window.addToolBar(Qt.TopToolBarArea, self.toolBar) self.actionNew = QAction(main_window) self.actionNew.setObjectName("actionNew") self.actionQuit = QAction(main_window) self.actionQuit.setObjectName("actionQuit") self.actionOpen = QAction(main_window) self.actionOpen.setObjectName("actionOpen") self.actionSave = QAction(main_window) self.actionSave.setObjectName("actionSave") self.actionSaveAs = QAction(main_window) self.actionSaveAs.setObjectName("actionSaveAs") self.actionClose = QAction(main_window) self.actionClose.setObjectName("actionClose") self.actionExport = QAction(main_window) self.actionExport.setObjectName("actionExport") self.actionImport = QAction(main_window) self.actionImport.setObjectName("actionImport") self.toolBar.addAction(self.actionNew) self.toolBar.addAction(self.actionOpen) self.toolBar.addAction(self.actionImport) self.toolBar.addAction(self.actionSave) self.toolBar.addAction(self.actionSaveAs) self.toolBar.addAction(self.actionExport) self.toolBar.addAction(self.actionClose) self.toolBar.addAction(self.actionQuit) self.retranslateUi(main_window) QMetaObject.connectSlotsByName(main_window) def retranslateUi(self, main_window): _translate = QCoreApplication.translate main_window.setWindowTitle(_translate("MainWindow", "SpriteMator")) self.toolBar.setWindowTitle(_translate("MainWindow", "toolBar")) self.actionNew.setText(_translate("MainWindow", "New")) self.actionNew.setIconText(_translate("MainWindow", "New")) self.actionNew.setToolTip(_translate("MainWindow", "New Sprite")) self.actionNew.setShortcut(_translate("MainWindow", "Ctrl+N")) self.actionQuit.setText(_translate("MainWindow", "Quit")) self.actionQuit.setToolTip( _translate("MainWindow", "Close Application")) self.actionQuit.setShortcut(_translate("MainWindow", "Esc")) self.actionOpen.setText(_translate("MainWindow", "Open")) self.actionOpen.setToolTip(_translate("MainWindow", "Open Sprite")) self.actionOpen.setShortcut(_translate("MainWindow", "Ctrl+O")) self.actionSave.setText(_translate("MainWindow", "Save")) self.actionSave.setToolTip(_translate("MainWindow", "Save Sprite")) self.actionSave.setShortcut(_translate("MainWindow", "Ctrl+S")) self.actionSaveAs.setText(_translate("MainWindow", "SaveAs")) self.actionSaveAs.setToolTip( _translate("MainWindow", "Save Sprite with another name")) self.actionSaveAs.setShortcut(_translate("MainWindow", "Ctrl+Shift+S")) self.actionClose.setText(_translate("MainWindow", "Close")) self.actionClose.setToolTip(_translate("MainWindow", "Close Sprite")) self.actionClose.setShortcut(_translate("MainWindow", "Ctrl+Q")) self.actionExport.setText(_translate("MainWindow", "Export")) self.actionExport.setToolTip( _translate( "MainWindow", "Export Sprite animations : Either as separate images or as a spritesheet" )) self.actionExport.setShortcut(_translate("MainWindow", "Ctrl+E")) self.actionImport.setText(_translate("MainWindow", "Import")) self.actionImport.setToolTip( _translate("MainWindow", "Create a Sprite from one or more images")) self.actionImport.setShortcut(_translate("MainWindow", "Ctrl+I"))
class StatusBar(QWidget): def __init__(self, parent): super().__init__() self.initUI() def initUI(self): self.centralFrame = QFrame(self) self.centralFrame.setFrameShape(QFrame.NoFrame) self.centralFrame.setFrameShadow(QFrame.Raised) self.centralFrame.setMinimumSize(QSize(0, 25)) self.centralFrame.setMaximumSize(QSize(16777215, 25)) self.centralFrame.setContentsMargins(0, 0, 0, 0) self.centralFrame.setStyleSheet(u"background-color: rgb(27, 29, 35);") self.labelsFrame = QFrame(self.centralFrame) self.labelsFrame.setFrameShape(QFrame.NoFrame) self.labelsFrame.setFrameShadow(QFrame.Raised) self.labelsFrame.setContentsMargins(0, 0, 0, 0) self.labelsFrame.setStyleSheet("border: none;") self.developerLabel = Label(self.labelsFrame) self.developerLabel.setText("Ashwin Sakhare") self.instituteLabel = Label(self.labelsFrame) self.instituteLabel.setText( "Stevens Neuroimaging and Informatics Institute") self.universityLabel = Label(self.labelsFrame) self.universityLabel.setText("University of Southern California") self.labelsLayout = QHBoxLayout(self.labelsFrame) self.labelsLayout.addWidget(self.developerLabel) self.labelsLayout.addWidget(self.instituteLabel) self.labelsLayout.addWidget(self.universityLabel) self.labelsLayout.setSpacing(50) self.labelsLayout.setContentsMargins(10, 0, 0, 0) self.labelsLayout.setAlignment(Qt.AlignLeft) self.versionFrame = QFrame(self.centralFrame) self.versionFrame.setFrameShape(QFrame.NoFrame) self.versionFrame.setFrameShadow(QFrame.Raised) self.versionFrame.setContentsMargins(0, 0, 0, 0) self.versionFrame.setStyleSheet("border: none;") self.versionLabel = Label(self.labelsFrame) self.versionLabel.setText("v1.0.0 alpha") self.versionLayout = QHBoxLayout(self.versionFrame) self.versionLayout.addWidget(self.versionLabel) self.versionLayout.setAlignment(Qt.AlignRight) self.versionLayout.setContentsMargins(0, 0, 20, 0) self.gripFrame = QFrame(self.centralFrame) self.gripFrame.setFrameShape(QFrame.NoFrame) self.gripFrame.setFrameShadow(QFrame.Raised) self.gripFrame.setMaximumSize(QSize(20, 20)) self.gripFrame.setContentsMargins(0, 0, 0, 0) # path = resource_path('icons/cil-size-grip.png') # self.gripFrame.setStyleSheet("background-image: url(" + str(path) + "); \n" # "background-position: center; \n" # "background-repeat: no repeat") self.ui_sizeGrip = QSizeGrip(self.gripFrame) self.ui_sizeGrip.setStyleSheet( "width: 20px; height: 20px; margin 0px; padding: 0px;") self.gripLabel = QLabel(self.gripFrame) self.pixmap = QPixmap(resource_path('icons/cil-size-grip.png')) self.gripLabel.setPixmap(self.pixmap) self.gripLayout = QHBoxLayout(self.gripFrame) self.gripLayout.addWidget(self.gripLabel) self.gripLayout.setAlignment(Qt.AlignCenter) self.gripLayout.setContentsMargins(0, 0, 0, 0) self.centralLayout = QHBoxLayout(self.centralFrame) self.centralLayout.addWidget(self.labelsFrame) self.centralLayout.addWidget(self.versionFrame) self.centralLayout.addWidget(self.gripFrame) self.centralLayout.setSpacing(0) self.centralLayout.setContentsMargins(0, 0, 0, 0) self.uiLayout = QHBoxLayout(self) self.uiLayout.addWidget(self.centralFrame) self.uiLayout.setContentsMargins(0, 0, 0, 0) self.setLayout(self.uiLayout)
class ClientAccountView(QDialog): """All details that client can see on the interface""" def __init__(self, email): super(ClientAccountView, self).__init__() self.ui = loadUi("Resources/interfaces/client_panel.ui", self) self.show() self.open_trips_button.clicked.connect(self.open_all_trips) self.emp_title_back_to_first_page.clicked.connect(self.back_to_first_page) self.menu_trip_button.clicked.connect(lambda: self.trip_booking(email)) def open_all_trips(self): self.ui.stackedWidget.setCurrentWidget(self.ui.Trips_page) get_number_of_trips_to_load = 'SELECT COUNT(*) FROM trips' DatabaseConnection.cursor.execute(get_number_of_trips_to_load) number_of_trips, = DatabaseConnection.cursor.fetchone() get_trips_details = 'SELECT * FROM trips' DatabaseConnection.cursor.execute(get_trips_details) trip_details = DatabaseConnection.cursor.fetchall() for i in range(number_of_trips): trip_name = trip_details[i][1] trip_price = str(trip_details[i][2]) trip_country = trip_details[i][3] trip_city = trip_details[i][4] trip_start = str(trip_details[i][5]) trip_end = str(trip_details[i][6]) trip_ship = trip_details[i][7] self.create_new_widget(i, 0, trip_name, trip_price, trip_country, trip_city, trip_start, trip_end, trip_ship) def back_to_first_page(self): self.ui.stackedWidget.setCurrentWidget(self.Welcome_page) def create_new_widget(self, row, column, trip_name, trip_price, trip_country, trip_city, trip_start, trip_end, trip_ship): self.single_trip = QFrame(self.ui.scrollAreaWidgetContents) self.single_trip.setObjectName(u"single_trip") self.single_trip.setMinimumSize(QSize(0, 125)) self.single_trip.setMaximumSize(QSize(16777215, 125)) self.single_trip.setStyleSheet(u"") self.single_trip.setFrameShape(QFrame.StyledPanel) self.single_trip.setFrameShadow(QFrame.Raised) self.gridLayout_2 = QGridLayout(self.ui.single_trip) self.gridLayout_2.setObjectName(u"gridLayout_2") self.name_label = QLabel(self.single_trip) self.name_label.setObjectName(u"name_label") self.name_label.setText(QCoreApplication.translate("Dialog", 'Name: ' + trip_name, None)) self.gridLayout_2.addWidget(self.name_label, 0, 0, 1, 1) self.price_label = QLabel(self.single_trip) self.price_label.setObjectName(u"price_label") self.price_label.setAlignment(Qt.AlignRight) self.price_label.setText(QCoreApplication.translate("Dialog", 'Price: ' + trip_price, None)) self.gridLayout_2.addWidget(self.price_label, 0, 3, 1, 1) self.country_label = QLabel(self.single_trip) self.country_label.setObjectName(u"country_label") self.country_label.setText(QCoreApplication.translate("Dialog", 'Sail out of: ' + trip_country, None)) self.gridLayout_2.addWidget(self.country_label, 1, 0, 1, 1) self.city_label = QLabel(self.single_trip) self.city_label.setObjectName(u"city_label") self.city_label.setText(QCoreApplication.translate("Dialog", trip_city, None)) self.gridLayout_2.addWidget(self.city_label, 1, 1, 1, 1) self.start_label = QLabel(self.single_trip) self.start_label.setObjectName(u"start_label") self.start_label.setText(QCoreApplication.translate("Dialog", 'Date: ' + trip_start[0:10], None)) self.gridLayout_2.addWidget(self.start_label, 1, 2, 1, 1) self.end_label = QLabel(self.single_trip) self.end_label.setObjectName(u"end_label") self.end_label.setText(QCoreApplication.translate("Dialog", trip_end[0:10], None)) self.gridLayout_2.addWidget(self.end_label, 1, 3, 1, 1) self.ship_label = QLabel(self.single_trip) self.ship_label.setObjectName(u"ship_label") self.ship_label.setText(QCoreApplication.translate("Dialog", 'Ship: ' + trip_ship, None)) self.gridLayout_2.addWidget(self.ship_label, 2, 0, 1, 1) self.horizontalSpacer = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum) self.gridLayout_2.addItem(self.horizontalSpacer, 0, 1, 1, 1) self.gridLayout.addWidget(self.single_trip, row, column, 1, 1) def trip_booking(self, email): self.ui.stackedWidget.setCurrentWidget(self.Choose_trip_page) LoadDataToComboBox.load_trips(self.trip_combobox) get_number_of_available_trips = 'SELECT COUNT(*) FROM trips' DatabaseConnection.cursor.execute(get_number_of_available_trips) number_of_available_trips, = DatabaseConnection.cursor.fetchone() if number_of_available_trips == 0: self.ui.stackedWidget.setCurrentWidget(self.Choose_trip_page) self.trip_name_error_label.setText('No trips available') else: self.load_trips_on_change() self.trip_combobox.currentTextChanged.connect(self.load_trips_on_change) self.book_button.clicked.connect(lambda: self.check_details_of_trip_to_book(email)) def load_trips_on_change(self): trip_name = self.trip_combobox.currentText() get_ship_name_assigned_to_trip = 'SELECT onboard FROM trips WHERE name = :given_trip_name' DatabaseConnection.cursor.execute(get_ship_name_assigned_to_trip, given_trip_name=trip_name) ship_name_assigned_to_trip, = DatabaseConnection.cursor.fetchone() get_ship_id_assigned_to_trip = 'SELECT ship_id FROM ships WHERE ship_name = :given_ship_name' DatabaseConnection.cursor.execute(get_ship_id_assigned_to_trip, given_ship_name=ship_name_assigned_to_trip) ship_id_assigned_to_trip, = DatabaseConnection.cursor.fetchone() get_number_of_available_ship_cabins = "SELECT COUNT(*) FROM ship_cabins WHERE room_type IS NOT NULL AND" \ " reserved = 'F' AND ship_id = :given_ship_id" DatabaseConnection.cursor.execute(get_number_of_available_ship_cabins, given_ship_id=ship_id_assigned_to_trip) number_of_available_ship_cabins, = DatabaseConnection.cursor.fetchone() get_available_ship_cabins_for_trip = "SELECT room_number, room_type, guests, sq_m, balcony_sq_m FROM" \ " ship_cabins WHERE" \ " room_type IS NOT NULL AND reserved = 'F' AND ship_id = :given_ship_id" DatabaseConnection.cursor.execute(get_available_ship_cabins_for_trip, given_ship_id=ship_id_assigned_to_trip) available_ship_cabins_for_trip = DatabaseConnection.cursor.fetchall() self.cabin_combobox.clear() for i in range(number_of_available_ship_cabins): room_number = available_ship_cabins_for_trip[i][0] cabin_type = available_ship_cabins_for_trip[i][1] cabin_guest = available_ship_cabins_for_trip[i][2] cabin_sq_m = available_ship_cabins_for_trip[i][3] cabin_balcony_sq_m = available_ship_cabins_for_trip[i][4] self.cabin_combobox.addItem(str('Cabin type: ') + cabin_type + str(' Guests: ') + str(cabin_guest) + str(' Square meters: ') + str(cabin_sq_m) + str(' Balcony square meters: ') + str(cabin_balcony_sq_m) + str(' Room number: ') + room_number) def check_details_of_trip_to_book(self, email): check_trip_to_book = CheckDetailsTripToBook() trip_name = self.trip_combobox.currentText() trip_name_check = check_trip_to_book.check_trip_name(trip_name, self.trip_name_error_label) cabin = self.cabin_combobox.currentText() cabin_check = check_trip_to_book.check_room_to_book(cabin, self.cabin_error_label) room_number = cabin[-3:].strip() if trip_name_check and cabin_check: AddPortObjectToDatabase.NewBookedTrip(email, trip_name, room_number) self.close()
class SideMenu(QWidget): SCAN_BUTTON = 0 VIEW_BUTTON = 1 WRITE_BUTTON = 2 def __init__(self, parent): super().__init__() self.initUI() def initUI(self): self.centralFrame = QFrame(self) self.sizePolicy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred) self.sizePolicy.setHorizontalStretch(0) self.sizePolicy.setVerticalStretch(0) self.sizePolicy.setHeightForWidth( self.centralFrame.sizePolicy().hasHeightForWidth()) self.centralFrame.setSizePolicy(self.sizePolicy) self.centralFrame.setFrameShape(QFrame.NoFrame) self.centralFrame.setFrameShadow(QFrame.Raised) self.centralFrame.setMinimumSize(QSize(70, 0)) self.centralFrame.setMaximumSize(QSize(70, 16777215)) self.centralFrame.setLayoutDirection(Qt.LeftToRight) self.centralFrame.setStyleSheet(u"background-color: rgb(27, 29, 35);") self.logoFrame = QFrame(self.centralFrame) self.logoFrame.setFrameShape(QFrame.NoFrame) self.logoFrame.setFrameShadow(QFrame.Raised) self.logoFrame.setContentsMargins(0, 0, 0, 0) self.logoFrame.setStyleSheet("border: none;") self.logoWidget = Logo(self.logoFrame) self.logoLayout = QHBoxLayout(self.logoFrame) self.logoLayout.setAlignment(Qt.AlignCenter) self.logoLayout.addWidget(self.logoWidget) self.btnsFrame = QFrame(self.centralFrame) self.btnsFrame.setFrameShape(QFrame.NoFrame) self.btnsFrame.setFrameShadow(QFrame.Raised) self.btnsFrame.setContentsMargins(0, 0, 0, 0) self.btnsFrame.setStyleSheet("border: none;") self.networkBtn = MenuButton(self.btnsFrame) self.networkBtn.setIcon(QIcon( resource_path("icons/cil-wifi-signal-1"))) self.networkBtn.setToolTip("Scan for Devices") self.viewBtn = MenuButton(self.btnsFrame) self.viewBtn.setIcon(QIcon(resource_path("icons/cil-speedometer"))) self.viewBtn.setToolTip("View Device Measurements") self.writeBtn = MenuButton(self.btnsFrame) self.writeBtn.setIcon(QIcon(resource_path("icons/cil-transfer"))) self.writeBtn.setToolTip("Output Device Measurements") self.btnsLayout = QVBoxLayout(self.btnsFrame) self.btnsLayout.addWidget(self.networkBtn) self.btnsLayout.addWidget(self.viewBtn) self.btnsLayout.addWidget(self.writeBtn) self.btnsLayout.setContentsMargins(0, 0, 0, 0) self.centralLayout = QVBoxLayout(self.centralFrame) self.centralLayout.addWidget(self.logoFrame, stretch=.5, alignment=Qt.AlignTop) self.centralLayout.addWidget(self.btnsFrame, stretch=4, alignment=Qt.AlignTop) self.centralLayout.setContentsMargins(0, 0, 0, 0) self.uiLayout = QHBoxLayout(self) self.uiLayout.addWidget(self.centralFrame) self.uiLayout.setContentsMargins(0, 0, 0, 0) self.setLayout(self.uiLayout)
class DisplayBrightnessSelectorView(QWidget): """The range (dual-value) slider for adjust voxel brightness.""" def __init__(self, controller, parent=Controller): super(DisplayBrightnessSelectorView, self).__init__() self.label = QLabel('Voxel Display Boundaries') self.startProportion = 0.1 # the start slider's range proportion to the entire range length self.startSliderMaxValue = int( VOX_MAX_VAL * self.startProportion) # the max value of the start slider self.endSliderMaxValue = int( VOX_MAX_VAL * (1 - self.startProportion)) # the max value of the end slider self.minDisplayVox = 0 # the converted min value for displaying voxel self.maxDisplayVox = VOX_MAX_VAL # the converted max value for displaying voxel self.controller = controller self.setupUi(self) def convertMinSliderToMinVox(self, value): """Converts the value from the start slider (inverted) to min voxel value""" return int(VOX_MAX_VAL * self.startProportion - value) def convertMaxSliderToMaxVox(self, value): """Converts the value from the end slider to max voxel value""" return int(value + VOX_MAX_VAL * self.startProportion) def setupUi(self, RangeSlider): RangeSlider.setObjectName("RangeSlider") RangeSlider.resize(1000, 65) RangeSlider.setMaximumSize(QSize(16777215, 65)) self.RangeBarVLayout = QVBoxLayout(RangeSlider) self.RangeBarVLayout.setContentsMargins(5, 0, 5, 0) self.RangeBarVLayout.setSpacing(0) self.RangeBarVLayout.setObjectName("RangeBarVLayout") self.slidersFrame = QFrame(RangeSlider) self.slidersFrame.setMaximumSize(QSize(16777215, 25)) self.slidersFrame.setFrameShape(QFrame.StyledPanel) self.slidersFrame.setFrameShadow(QFrame.Raised) self.slidersFrame.setObjectName("slidersFrame") self.horizontalLayout = QHBoxLayout(self.slidersFrame) self.horizontalLayout.setSizeConstraint(QLayout.SetMinimumSize) self.horizontalLayout.setContentsMargins(5, 2, 5, 2) self.horizontalLayout.setSpacing(0) self.horizontalLayout.setObjectName("horizontalLayout") ## Start Slider Widget self.startSlider = QSlider(self.slidersFrame) self.startSlider.setMaximum(self.startSliderMaxValue) self.startSlider.setMinimumSize(QSize(100, 20)) self.startSlider.setMaximumSize(QSize(16777215, 20)) font = QtGui.QFont() font.setKerning(True) self.startSlider.setFont(font) self.startSlider.setAcceptDrops(False) self.startSlider.setAutoFillBackground(False) self.startSlider.setOrientation(Qt.Horizontal) self.startSlider.setInvertedAppearance(True) self.startSlider.setObjectName("startSlider") self.startSlider.setValue(self.startSliderMaxValue) self.startSlider.valueChanged.connect( self.handleStartSliderValueChange) # End Slider Widget self.endSlider = QSlider(self.slidersFrame) self.endSlider.setMaximum(self.endSliderMaxValue) self.endSlider.setMinimumSize(QSize(100, 20)) self.endSlider.setMaximumSize(QSize(16777215, 20)) self.endSlider.setTracking(True) self.endSlider.setOrientation(Qt.Horizontal) self.endSlider.setObjectName("endSlider") self.endSlider.setValue(self.endSliderMaxValue) self.endSlider.valueChanged.connect(self.handleEndSliderValueChange) # self.endSlider.sliderReleased.connect(self.handleEndSliderValueChange) self.horizontalLayout.addWidget(self.startSlider, int(self.startProportion * 100)) self.horizontalLayout.addWidget(self.endSlider, int(100 - 100 * self.startProportion)) self.RangeBarVLayout.addWidget(self.label) self.RangeBarVLayout.addWidget(self.slidersFrame) # self.retranslateUi(RangeSlider) QMetaObject.connectSlotsByName(RangeSlider) self.show() def updateLabel(self): # print(f'Voxel sliders: {self.minDisplayVox}, {self.maxDisplayVox}') self.label.setText( f'Voxel Brightness Range:({self.minDisplayVox},{self.maxDisplayVox})' ) @pyqtSlot(int) def handleStartSliderValueChange(self, value): self.startSlider.setValue(value) self.minDisplayVox = self.convertMinSliderToMinVox(value) self.updateLabel() self.controller.updateVoxDisplayRange(self.minDisplayVox, self.maxDisplayVox) @pyqtSlot(int) def handleEndSliderValueChange(self, value): self.endSlider.setValue(value) self.maxDisplayVox = self.convertMaxSliderToMaxVox(value) self.updateLabel() self.controller.updateVoxDisplayRange(self.minDisplayVox, self.maxDisplayVox) def setStartSliderValue(self, value): self.startSlider.setValue(value) def setEndSliderValue(self, value): self.endSlider.setValue(value)
class Ui_Dialog(object): """对话框 UI.""" def setupUi(self, MainWindow): """UI 初始化.""" MainWindow.setObjectName('MainWindow') MainWindow.resize(400, 400) self.centralWidget = QWidget(MainWindow) self.centralWidget.setObjectName("centralWidget") # vertical box, the principal layout self.mainVBox = QVBoxLayout(self.centralWidget) self.topHBox = QHBoxLayout() self.lbl = QLabel('lbl') self.comboBox = QComboBox() self.comboBox.setMinimumSize(150, 10) spacerItem = QSpacerItem(30, 10, QSizePolicy.Expanding, QSizePolicy.Minimum) self.topHBox.addWidget(self.lbl) self.topHBox.addWidget(self.comboBox) self.topHBox.addItem(spacerItem) # left frame self.leftFrame = QFrame() self.leftFrame.setFrameShape(QFrame.StyledPanel) self.leftFrame.setGeometry(0, 0, 200, 500) self.leftFrame.setMinimumSize(100, 200) self.leftFrame.setMaximumSize(200, 300) # self.leftFrame.setSizePolicy(QSizePolicy.Expanding, # QSizePolicy.Expanding) self.leftListView = QListView(self.leftFrame) self.leftListView.setWindowTitle('表清单') self.leftListView.setMinimumSize(100, 200) self.leftListView.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) self.leftListView.setEditTriggers(QListView.NoEditTriggers) # button frame self.buttonFrame = QFrame() self.buttonFrame.setFrameShape(QFrame.StyledPanel) self.buttonFrame.setFrameShadow(QFrame.Raised) self.buttonLayout = QHBoxLayout(self.buttonFrame) # button self.submitButton = QPushButton(self.buttonFrame) self.submitButton.setText('submitButton') self.exitButton = QPushButton(self.buttonFrame) self.exitButton.setText('exitButton') spacerItem = QSpacerItem(200, 10, QSizePolicy.Expanding, QSizePolicy.Minimum) self.buttonLayout.addItem(spacerItem) self.buttonLayout.addWidget(self.submitButton) self.buttonLayout.addWidget(self.exitButton) self.mainVBox.addLayout(self.topHBox) self.mainVBox.addWidget(self.leftListView) self.mainVBox.addWidget(self.buttonFrame) # bind centralWidget to MainWindow **************************** MainWindow.setCentralWidget(self.centralWidget) self.retranslationUi(MainWindow) QMetaObject.connectSlotsByName(MainWindow) def retranslationUi(self, MainWindow): """窗口标题命名.""" _translate = QCoreApplication.translate MainWindow.setWindowTitle(_translate('MainWindow', '权限管理')) self.submitButton.setText(_translate('submitButton', '确认提交')) self.exitButton.setText(_translate('exitButton', '退出')) self.lbl.setText(_translate('lbl', '权限名称: '))
class DashboardMainWindow(QMainWindow): def __init__(self, gui_concentrate_handler, parent=None): super(DashboardMainWindow, self).__init__(parent) self.gui_concentrate_handler = gui_concentrate_handler self.__setup_ui__() def __setup_ui__(self): self.setObjectName(DashboardMainWindowStyles.main_page_style[0]) self.setWindowModality(Qt.ApplicationModal) self.setContextMenuPolicy(Qt.NoContextMenu) self.setAcceptDrops(False) self.setAutoFillBackground(False) self.setDocumentMode(False) self.setDockNestingEnabled(False) self.setMouseTracking(True) self.central_widget = QWidget(self) self.central_widget.setStyleSheet(DashboardMainWindowStyles.central_widget_style) # Add Central Layout self.central_vlayout = QVBoxLayout(self.central_widget) self.central_vlayout.setContentsMargins(0, 0, 0, 0) self.central_vlayout.setObjectName("central_vlayout") # Add Containers self.containers = QFrame(self.central_widget) self.containers.setObjectName(DashboardMainWindowStyles.main_window_containers_style[0]) self.containers.setStyleSheet(DashboardMainWindowStyles.main_window_containers_style[1]) self.containers.setFrameShape(QFrame.NoFrame) self.containers.setFrameShadow(QFrame.Plain) self.containers.setLineWidth(0) # Add Containers Layout self.containers_gridlayout = QGridLayout(self.containers) self.containers_gridlayout.setContentsMargins(0, 0, 0, 0) self.containers_gridlayout.setSpacing(0) self.containers_gridlayout.setObjectName("containers_gridlayout") # Add Scroll Layout self.navigation_scroll_layout = QScrollArea(self.containers) self.navigation_scroll_layout.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) self.navigation_scroll_layout.setObjectName(DashboardMainWindowStyles.navigation_scroll_layout_style[0]) self.navigation_scroll_layout.setStyleSheet(DashboardMainWindowStyles.navigation_scroll_layout_style[1]) self.navigation_scroll_layout.setWidgetResizable(True) self.navigation_scroll_layout.setMinimumSize(QSize(71, 0)) self.navigation_scroll_layout.setMaximumSize(QSize(71, 16777215)) # add contents self.navigation_scroll_layout_contents = QWidget() self.navigation_scroll_layout_contents.setGeometry(QRect(0, 0, 71, self.height())) self.navigation_scroll_layout_contents.setObjectName("scroll_area_contents_page_containers") # َAdd navigation_layout self.navigation_grid_layout = QGridLayout(self.navigation_scroll_layout_contents) self.navigation_grid_layout.setContentsMargins(0, 0, 0, 0) self.navigation_grid_layout.setVerticalSpacing(0) self.navigation_grid_layout.setObjectName("navigation_grid_layout") # Add Navigation self.navigation_menu = QFrame(self.navigation_scroll_layout_contents) self.navigation_menu.setObjectName(DashboardMainWindowStyles.navigation_menu_style[0]) self.navigation_menu.setStyleSheet(DashboardMainWindowStyles.navigation_menu_style[1]) self.navigation_menu.setMaximumSize(QSize(71, 16777215)) self.navigation_menu.setFrameShape(QFrame.StyledPanel) self.navigation_menu.setFrameShadow(QFrame.Raised) # set Media Screen self.__media_screen__() # Add MainFrame self.main_frame = QFrame(self.containers) size_policy = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred) size_policy.setHorizontalStretch(0) size_policy.setVerticalStretch(0) size_policy.setHeightForWidth(self.main_frame.sizePolicy().hasHeightForWidth()) self.main_frame.setSizePolicy(size_policy) self.main_frame.setObjectName("main_frame") # Add MainFrameLayout self.main_frame_gridLayout = QGridLayout(self.main_frame) self.main_frame_gridLayout.setContentsMargins(8, 8, 8, 8) self.main_frame_gridLayout.setSpacing(0) self.main_frame_gridLayout.setObjectName("gridLayout") # Add pic_main_logo self.pic_main_logo = QLabel(self.navigation_menu) self.pic_main_logo.setGeometry(QRect(0, 35, 71, 71)) self.pic_main_logo.setAlignment(Qt.AlignCenter) self.pic_main_logo.setPixmap(QPixmap(AppPaths.GUI_ASSETS_ICONS_PATH + "/main_window/kodiak_icon.svg")) self.pic_main_logo.setObjectName("pic_main_logo") # Add LblTime self.lbl_time = QLabel(self.navigation_menu) self.lbl_time.setGeometry(QRect(0, 120, 69, 20)) self.lbl_time.setObjectName(DashboardMainWindowStyles.lbl_time_style[0]) self.lbl_time.setStyleSheet(DashboardMainWindowStyles.lbl_time_style[1]) self.lbl_time.setAlignment(Qt.AlignCenter) # Add lblDate self.lbl_date = QLabel(self.navigation_menu) self.lbl_date.setGeometry(QRect(0, 140, 71, 21)) self.lbl_date.setObjectName(DashboardMainWindowStyles.lbl_date_style[0]) self.lbl_date.setStyleSheet(DashboardMainWindowStyles.lbl_date_style[1]) self.lbl_date.setAlignment(Qt.AlignCenter) self.navigation_item_vlayout = QWidget(self.navigation_menu) self.navigation_item_vlayout.setGeometry(QRect(0, 220, 64, 431)) self.navigation_item_vlayout.setObjectName("navigation_item_vlayout") # set li_hacktor_logo self.li_hacktor = QLabel(self.navigation_menu) self.li_hacktor.setAccessibleName("hacktor_logo") is_extra_screen, extra_screen_width, extra_screen_height = MediaScreen().is_extra_large() if is_extra_screen: if extra_screen_height <= 800: self.li_hacktor.hide() else: self.li_hacktor.setGeometry(QRect(25, self.height() - 80, 22, 33)) else: if extra_screen_height > 800: self.li_hacktor.setGeometry(QRect(25, self.height() - 80, 22, 33)) else: if extra_screen_height <= 600: self.li_hacktor.hide() else: self.li_hacktor.setGeometry(QRect(25, self.height(), 22, 33)) self.li_hacktor.setPixmap(QPixmap(AppPaths.GUI_ASSETS_ICONS_PATH + "/main_window/hacktor_logo.svg")) self.li_hacktor.setAlignment(Qt.AlignRight | Qt.AlignTrailing | Qt.AlignVCenter) self.page_containers = QFrame(self.main_frame) self.page_containers.setFrameShape(QFrame.StyledPanel) self.page_containers.setFrameShadow(QFrame.Raised) self.page_containers.setObjectName("center_page_maker") self.page_containers.setMinimumSize(self.width() - 111, self.height() - 111) self.main_frame_gridLayout.addWidget(self.page_containers, 1, 0, 1, 4) self.page_containers_grid_layout = QGridLayout(self.page_containers) self.page_containers_grid_layout.setObjectName("page_containers_gridLayout") from ...components.menu_containers.menu_containers import MenuContainers self.menu = MenuContainers( self.page_containers_grid_layout, gui_concentrate_handler=self.gui_concentrate_handler ) self.menu.setup_ui( navigation_item_vlayout=self.navigation_item_vlayout, containers=self.containers, page_containers=self.page_containers ) from ...components.top_navigation_bar_containers.top_navigation_bar_containers import TopNavigationBarContainers TopNavigationBarContainers( gui_concentrate_handler=self.gui_concentrate_handler ).setup_ui(containers=self.main_frame, main_gridLayout=self.main_frame_gridLayout) main_icon = QIcon() main_icon.addPixmap(QPixmap(AppPaths.GUI_ASSETS_ICONS_PATH + "/main_window/main_logo.ico")) self.setWindowIcon(main_icon) self.setAutoFillBackground(False) self.setStyleSheet(DashboardMainWindowStyles.main_page_style[1]) self.setDocumentMode(False) self.setDockNestingEnabled(False) self.navigation_grid_layout.addWidget(self.navigation_menu, 0, 0, 1, 1) self.containers_gridlayout.addWidget(self.navigation_scroll_layout, 2, 2, 1, 1) self.navigation_scroll_layout.setWidget(self.navigation_scroll_layout_contents) # self.central_widget = QWidget(self) # self.central_widget.setStyleSheet(DashboardMainWindowStyles.central_widget_style) self.central_vlayout.addWidget(self.containers) self.containers_gridlayout.addWidget(self.main_frame, 2, 1, 1, 1) self.setCentralWidget(self.central_widget) self.__retranslateUi__() def __retranslateUi__(self): """ this method for retranslate data in UI """ _translate = QCoreApplication.translate self.setWindowTitle(_translate("MainWindow", "Kodiak")) self.lbl_time.setText("04:20") self.lbl_date.setText("2020/15/19") def __media_screen__(self): """ this is private method for set a standard size window for Your monitor , Tablet or ... """ is_small_screen, small_screen_width, small_screen_height = MediaScreen().is_small() is_medium_screen, medium_screen_width, medium_screen_height = MediaScreen().is_medium() is_large_screen, large_screen_width, large_screen_height = MediaScreen().is_large() is_extra_large_screen, extra_large_screen_width, extra_large_screen_height = MediaScreen().is_extra_large() if is_extra_large_screen: if extra_large_screen_height <= 900: self.setMinimumSize(QSize(extra_large_screen_width - (extra_large_screen_width / 4), extra_large_screen_height - (extra_large_screen_height / 4) + 100)) else: self.setMinimumSize(QSize(extra_large_screen_width - (extra_large_screen_width / 4), extra_large_screen_height - (extra_large_screen_height / 6) + 50)) self.navigation_menu.setMinimumSize(QSize(71, 700)) elif is_large_screen: self.setMinimumSize(QSize(large_screen_width - 200, large_screen_height - 90)) self.navigation_menu.setMinimumSize(QSize(71, 550)) elif is_medium_screen: self.setMinimumSize(QSize(medium_screen_width - 100, medium_screen_height - 100)) self.navigation_menu.setMinimumSize(QSize(71, 700)) elif is_small_screen: self.setMinimumSize(QSize(small_screen_width - 150, small_screen_width - 250)) self.navigation_menu.setMinimumSize(QSize(71, 700)) else: # any thing else self.setMinimumSize(QSize(1150, 800)) self.navigation_menu.setMinimumSize(QSize(71, 700)) # Delete From Memory del is_small_screen, is_medium_screen, is_large_screen del small_screen_width, medium_screen_width, large_screen_width del small_screen_height, medium_screen_height, large_screen_height
class WindowFrame(QDialog): def __init__(self): super(WindowFrame, self).__init__() self.closed = False self.maxNormal = False self.resize(840, 480) self.setMouseTracking(True) self.base_path = os.path.dirname(__file__) QDir.setCurrent(os.path.dirname(self.base_path)) #self.setWindowFlags(Qt.FramelessWindowHint) self.setWindowFlags(Qt.SplashScreen) #self.setWindowFlags(Qt.FramelessWindowHint|Qt.WindowStaysOnTopHint) #self.setStyleSheet("border : none; background-color : rgba(250,100,100,0)") #self.setAutoFillBackground(True) #self.setAttribute(Qt.WA_TranslucentBackground) self.mainLayout = QVBoxLayout() self.mainLayout.setContentsMargins(0, 0, 0, 0) self.mainLayout.setSpacing(0) #Title Bar self.area = ComboBox() self.area.setSizePolicy( QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)) self.area.setMaximumWidth(32) #self.area.setMinimumWidth(32) #self.area.setMinimumHeight(28) self.area.addItem(QIcon(icon_path("ICON_ACTION")), "Prefs") self.area.addItem(QIcon(icon_path("ICON_GROUP")), "Library") self.area.addItem(QIcon(icon_path("ICON_MATERIAL")), "Assets") self.titleBarArea = QFrame() #self.titleBarArea.setCursor(Qt.OpenHandCursor) self.titleBarLayout = QHBoxLayout() self.titleBarLayout.setContentsMargins(4, 2, 4, 2) self.titleBarArea.setStyleSheet(""" border : none; background-color : rgb(100,100,100); border-top-left-radius: 5px;border-top-right-radius: 5px; border-style: solid; border-color: rgb(50, 50, 50); border-bottom-width: 1px;""") self.titleBarArea.setMinimumHeight(30) self.titleBarArea.setMaximumHeight(30) self.title = Label('Lib Manager') self.toolBox = QFrame() self.toolBox.setStyleSheet(""" border : none; background-color : rgb(120,120,120); border-top-left-radius: 0px;border-top-right-radius: 0px; border-bottom-left-radius: 5px;border-bottom-right-radius: 5px;""" ) self.toolBoxLayout = QHBoxLayout() self.toolBoxLayout.setContentsMargins(12, 0, 4, 0) self.toolBox.setLayout(self.toolBoxLayout) self.btn_add_asset = PushButton(icon=icon_path("ICON_ZOOMIN"), size=[22, 22]) self.btn_settings = PushButton(icon=icon_path("ICON_SETTINGS"), size=[22, 22]) self.toolBoxLayout.addWidget(self.btn_add_asset) self.toolBoxLayout.addWidget(self.btn_settings) self.horizontalSpacer = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum) self.hSpacer = QSpacerItem(30, 20, QSizePolicy.Maximum, QSizePolicy.Minimum) self.btn_minimize = PushButton(icon=icon_path("ICON_MINIMIZE"), size=[22, 22]) self.btn_minimize.clicked.connect(self.showSmall) self.btn_maximize = PushButton(icon=icon_path("ICON_MAXIMIZE"), size=[22, 22]) self.btn_maximize.clicked.connect(self.showMaxRestore) self.btn_close = PushButton(icon=icon_path("ICON_CLOSE"), size=[22, 22]) self.btn_close.clicked.connect(self.close) self.titleBarLayout.addWidget(self.area) self.titleBarLayout.addWidget(self.title) self.titleBarLayout.addItem(self.horizontalSpacer) self.titleBarLayout.addWidget(self.toolBox) self.titleBarLayout.addItem(self.hSpacer) self.titleBarLayout.addWidget(self.btn_minimize) self.titleBarLayout.addWidget(self.btn_maximize) self.titleBarLayout.addWidget(self.btn_close) self.titleBarArea.setLayout(self.titleBarLayout) self.middleLayout = QHBoxLayout() self.handleList = [self.titleBarArea] #Left Bar self.leftBarLayout = QVBoxLayout() self.leftHandle = QFrame() self.leftHandle.setStyleSheet( "border : none; background-color : rgb(110,110,110);") self.leftHandle.setMaximumWidth(5) self.leftHandle.setMinimumWidth(5) self.leftHandle.setCursor(Qt.SizeHorCursor) self.leftBottomHandle = QFrame() self.leftBottomHandle.setStyleSheet( "border : none; background-color : rgb(110,110,110);") self.leftBottomHandle.setMaximumSize(5, 16) self.leftBottomHandle.setCursor(Qt.SizeBDiagCursor) #Add handle to a list self.handleList += [self.leftHandle, self.leftBottomHandle] self.leftBarLayout.addWidget(self.leftHandle) self.leftBarLayout.addWidget(self.leftBottomHandle) #Content #self.content = QFrame() self.contentLayout = QVBoxLayout() self.contentLayout.setContentsMargins(0, 0, 0, 0) self.contentLayout.setSpacing(0) #self.content.setLayout(self.contentLayout) #Right Bar self.rightBarLayout = QVBoxLayout() self.rightHandle = QFrame() self.rightHandle.setStyleSheet( "border : none; background-color : rgb(110,110,110);") self.rightHandle.setMaximumWidth(5) self.rightHandle.setMinimumWidth(5) self.rightHandle.setCursor(Qt.SizeHorCursor) self.rightBottomHandle = QFrame() self.rightBottomHandle.setStyleSheet( "border : none; background-color : rgb(110,110,110);") self.rightBottomHandle.setMaximumSize(5, 16) self.rightBottomHandle.setCursor(Qt.SizeFDiagCursor) self.rightBarLayout.addWidget(self.rightHandle) self.rightBarLayout.addWidget(self.rightBottomHandle) #Add handle to a list self.handleList += [self.rightHandle, self.rightBottomHandle] self.middleLayout.addLayout(self.leftBarLayout) self.middleLayout.addLayout(self.contentLayout) self.middleLayout.addLayout(self.rightBarLayout) self.bottomLayout = QHBoxLayout() self.bottomLeftHandle = QFrame() self.bottomLeftHandle.setStyleSheet( "border : none; background-color : rgb(110,110,110);") self.bottomLeftHandle.setMaximumSize(16, 5) self.bottomLeftHandle.setCursor(Qt.SizeBDiagCursor) self.bottomHandle = QFrame() self.bottomHandle.setStyleSheet( "border : none; background-color : rgb(110,110,110);") self.bottomHandle.setMaximumHeight(5) self.bottomHandle.setMinimumHeight(5) self.bottomHandle.setCursor(Qt.SizeVerCursor) self.bottomRightHandle = QFrame() self.bottomRightHandle.setStyleSheet( "border : none; background-color : rgb(110,110,110);") self.bottomRightHandle.setMaximumSize(16, 5) self.bottomRightHandle.setCursor(Qt.SizeFDiagCursor) self.bottomLayout.addWidget(self.bottomLeftHandle) self.bottomLayout.addWidget(self.bottomHandle) self.bottomLayout.addWidget(self.bottomRightHandle) #Add handle to a list self.handleList += [ self.bottomHandle, self.bottomLeftHandle, self.bottomRightHandle ] self.lowLayout = QVBoxLayout() self.lowLayout.addLayout(self.middleLayout) self.lowLayout.addLayout(self.bottomLayout) self.mainLayout.addWidget(self.titleBarArea) self.mainLayout.addLayout(self.lowLayout) ##Shadow self.shadow = QGraphicsDropShadowEffect() self.shadow.setColor(QColor(50, 50, 50, 200)) self.shadow.setXOffset(5) self.shadow.setYOffset(5) self.shadow.setBlurRadius(8) self.setGraphicsEffect(self.shadow) #self.shadow.setEnabled(False) self.setLayout(self.mainLayout) def setContent(self, content): self.contentLayout.addWidget(content) def showSmall(self): self.showMinimized() def showMaxRestore(self): if (self.maxNormal): self.showNormal() self.maxNormal = False self.btn_maximize.setIcon(QIcon(icon_path("ICON_MAXIMIZE"))) else: self.showMaximized() self.maxNormal = True self.btn_maximize.setIcon(QIcon(icon_path("ICON_MAXIMIZE_2"))) def mousePressEvent(self, event): if event.button() == Qt.LeftButton and QApplication.widgetAt( event.globalPos()) in self.handleList: #print(QApplication.widgetAt(event.globalPos())) self.moving = True self.pos_x = event.pos().x() self.pos_y = event.pos().y() self.pos = event.pos() def mouseMoveEvent(self, event): x_offset = event.pos().x() - self.pos_x y_offset = event.pos().y() - self.pos_y if self.moving: if self.rightHandle.underMouse(): self.resize(self.frameGeometry().width() + x_offset, self.frameGeometry().height()) self.pos_x += x_offset if self.leftHandle.underMouse(): self.move(event.globalPos().x() - self.pos_x, self.frameGeometry().y()) self.resize(self.frameGeometry().width() - x_offset, self.frameGeometry().height()) if self.bottomHandle.underMouse(): self.resize(self.frameGeometry().width(), self.frameGeometry().height() + y_offset) self.pos_y += y_offset if self.titleBarArea.underMouse(): self.move(event.globalPos() - self.pos) if self.rightBottomHandle.underMouse( ) or self.bottomRightHandle.underMouse(): self.resize(self.frameGeometry().width() + x_offset, self.frameGeometry().height() + y_offset) self.pos_x += x_offset self.pos_y += y_offset if self.leftBottomHandle.underMouse( ) or self.bottomLeftHandle.underMouse(): self.move(event.globalPos().x() - self.pos_x, self.frameGeometry().y()) self.resize(self.frameGeometry().width() - x_offset, self.frameGeometry().height() + y_offset) #self.pos_x += x_offset self.pos_y += y_offset def close(self): self.closed = True self.deleteLater()
class Window(QWidget): def __init__(self): super(Window, self).__init__() self.init_ui() def init_ui(self): v = QVBoxLayout() hbox1 = QHBoxLayout() btn = QPushButton("Dialog") btn.clicked.connect(self.showDialog) self.le = QLineEdit() hbox1.addWidget(btn) hbox1.addWidget(self.le) v.addLayout(hbox1) hbox2 = QHBoxLayout() btn1 = QPushButton("Dialog") btn1.clicked.connect(self.showDialog1) col = QColor(0, 0, 0) self.fram = QFrame() self.fram.setMinimumSize(100, 100) self.fram.setMaximumSize(self.fram.minimumSize()) self.fram.setStyleSheet("QWidget {background-color: %s}" % col.name()) hbox2.addWidget(btn1) hbox2.addWidget(self.fram) v.addLayout(hbox2) hbox3 = QHBoxLayout() btn3 = QPushButton("Dialog") btn3.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed) btn3.clicked.connect(self.showDialog3) self.lbl = QLabel("Knowledge only matters") hbox3.addWidget(btn3) hbox3.addWidget(self.lbl) v.addLayout(hbox3) btn4 = QPushButton("Dialog") btn4.clicked.connect(self.showDialog4) v.addWidget(btn4) self.setLayout(v) self.setGeometry(500, 100, 500, 200) self.setWindowTitle("simple") self.show() def showDialog(self): text, ok = QInputDialog.getText(self, "Input Dialog", "Enter your name") if ok: self.le.setText(str(text)) def showDialog1(self): col = QColorDialog.getColor() if col.isValid: self.fram.setStyleSheet("QWidget {background-color: %s}" % col.name()) def showDialog3(self): font, ok = QFontDialog.getFont() if ok: self.lbl.setFont(font) def showDialog4(self): files = QFileDialog.getOpenFileName(self, "open file", "/PyQt5-Chinese-tutorial")
def create_box(self, containers: QFrame, frame_gridLayout: QGridLayout, start_index: int = 0, plugins=None, box_type: bool = True): """this method for create primitive box Arguments: containers {QFrame} -- [parent layout] count_box {int} -- [count for create] Keyword Arguments: title {str} -- [title in box] (default: {""}) image {str} -- [image in box] (default: {None}) box_type {box type color type star box ...} -- [description] (default: {True}) start_location {int} -- [ create box in location] (default: {30}) """ box_enumerate = 0 for box_enumerate in range(0, len(plugins)): frame_border = QFrame(containers) frame_border.setCursor(QCursor(Qt.PointingHandCursor)) frame_border.setMaximumSize(138, 138) frame_border.setMinimumSize(138, 138) if box_type: frame_border.setObjectName( BoxStyles.frame_border_style_type1[0]) frame_border.setStyleSheet( BoxStyles.frame_border_style_type1[1]) else: frame_border.setObjectName( BoxStyles.frame_border_style_type2[0]) frame_border.setStyleSheet( BoxStyles.frame_border_style_type2[1]) frame_border.setFrameShape(QFrame.StyledPanel) frame_border.setFrameShadow(QFrame.Raised) frame_border_vlayout = QVBoxLayout(frame_border) frame_border_vlayout.setContentsMargins(3, 3, 3, 3) frame_border_vlayout.setObjectName("frame_border_vlayout") box = QFrame(frame_border) box.setGeometry(QRect(3, 3, 133, 133)) box.setCursor(QCursor(Qt.PointingHandCursor)) box.setObjectName(BoxStyles.box_style[0]) box.setStyleSheet(BoxStyles.box_style[1]) box.setFrameShape(QFrame.StyledPanel) box.setFrameShadow(QFrame.Raised) box.mouseReleaseEvent = ( lambda x: plugins[box_enumerate][0].execute_app()) box_vlayout = QVBoxLayout(box) box_vlayout.setContentsMargins(-1, 40, -1, -1) box_vlayout.setObjectName("box_vlayout") image: str = plugins[box_enumerate][1] if image is not None: picture = QLabel(box) picture.setGeometry(QRect(0, 40, 131, 51)) picture.setObjectName(BoxStyles.picture_style[0]) picture.setStyleSheet(BoxStyles.picture_style[1]) picture.setPixmap(QPixmap(image)) picture.setAlignment(Qt.AlignCenter) lbl_title = QLabel(box) lbl_title.setGeometry(QRect(0, 100, 133, 20)) lbl_title.setObjectName(BoxStyles.lbl_title_style[0]) lbl_title.setStyleSheet(BoxStyles.lbl_title_style[1]) lbl_title.setAlignment(Qt.AlignCenter) lbl_title.setText(plugins[box_enumerate][2]) frame_gridLayout.addWidget(frame_border, 0, (box_enumerate + start_index), Qt.AlignLeft) return int(box_enumerate + 1)
class MainWindow(QMainWindow): ''' classdocs ''' def __init__(self): super().__init__() splash = QPixmap("ressources/splash.png") splashscreen = QSplashScreen(splash) splashscreen.show() self.setWindowIcon(QIcon("ressources/fbld.ico")) self.setWindowTitle("FB Studio Info") rec = QApplication.desktop().screenGeometry() self.resize(rec.width(), rec.height()) self.drawMainWindow() self.showFullScreen() #self.show() splashscreen.finish(self) ''' Exit the program with escape key ''' def keyPressEvent(self, event): if (event.key() == Qt.Key_Escape): self.close() ''' Draw the main window ''' def drawMainWindow(self): self.windowLayout = QFrame(self) self.windowLayout.setMinimumSize(self.width(), self.height()) self.windowLayout.setMaximumSize(self.width(), self.height()) self.gridLayout = QGridLayout(self) self.gridLayout.setContentsMargins(0, 0, 0, 0) self.gridLayout.setSpacing(0) self.drawTop() self.drawBottom() self.windowLayout.setLayout(self.gridLayout) ''' Draw clock, FB Info ''' def drawTop(self): self.uiclock = UIClock(self) self.uiLeftInfo = UIInfoLeft(self) self.uiRightInfo = UIInfoRight(self) self.gridLayout.addWidget(self.uiclock, 0, 0) self.gridLayout.addWidget(self.uiLeftInfo, 0, 1) self.gridLayout.addWidget(self.uiRightInfo, 0, 2) ''' Draw tl-live, romandie and meteo ''' def drawBottom(self): self.uitl = UITLMain(self) self.uinews = UINews(self) self.uimeteo = UIMeteoMain(self) self.gridLayout.addWidget(self.uitl, 1, 0) self.gridLayout.addWidget(self.uinews, 1, 1) self.gridLayout.addWidget(self.uimeteo, 1, 2)
class TitleBar(QWidget): def __init__(self, ui_main): super().__init__() self.ui_main = ui_main self.initUI() self.minimizeBtn.clicked.connect(self.ui_main.showMinimized) self.resizeBtn.clicked.connect(self.resizeClicked) def initUI(self): self.sizePolicy = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred) self.sizePolicy.setHorizontalStretch(0) self.sizePolicy.setVerticalStretch(0) self.centralFrame = QFrame(self) self.centralFrame.setMinimumSize(QSize(0, 40)) self.centralFrame.setMaximumSize(QSize(16777215, 42)) self.centralFrame.setStyleSheet(u"background-color: rgba(27, 29, 35, 255)") self.centralFrame.setFrameShape(QFrame.NoFrame) self.centralFrame.setFrameShadow(QFrame.Raised) self.centralFrame.setContentsMargins(0, 0, 0, 0) """ Title Frame, Label, and Layout """ self.titleFrame = QFrame(self.centralFrame) self.sizePolicy.setHeightForWidth(self.titleFrame.sizePolicy().hasHeightForWidth()) self.titleFrame.setSizePolicy(self.sizePolicy) self.titleFrame.setFrameShape(QFrame.NoFrame) self.titleFrame.setFrameShadow(QFrame.Raised) self.titleFrame.setContentsMargins(0, 0, 0, 0) self.titleFrame.setStyleSheet("border: none;") self.label = TitleBarLabel(self.titleFrame) self.titleFrameLayout = QHBoxLayout(self.titleFrame) self.titleFrameLayout.setSpacing(0) self.titleFrameLayout.setContentsMargins(5, 0, 10, 0) self.titleFrameLayout.addWidget(self.label) """ Buttons Frame, Buttons, and Layout """ self.btnsFrame = QFrame(self.centralFrame) self.sizePolicy.setHeightForWidth(self.btnsFrame.sizePolicy().hasHeightForWidth()) self.btnsFrame.setSizePolicy(self.sizePolicy) self.btnsFrame.setMaximumSize(QSize(120, 16777215)) self.btnsFrame.setFrameShape(QFrame.NoFrame) self.btnsFrame.setFrameShadow(QFrame.Raised) self.btnsFrame.setContentsMargins(0, 0, 0, 0) self.btnsFrame.setStyleSheet("border: none;") self.minimizeBtn = MinimizeButton(self.btnsFrame) self.resizeBtn = ResizeButton(self.btnsFrame) self.closeBtn = CloseButton(self.btnsFrame) self.btnsLayout = QHBoxLayout(self.btnsFrame) self.btnsLayout.addWidget(self.minimizeBtn) self.btnsLayout.addWidget(self.resizeBtn) self.btnsLayout.addWidget(self.closeBtn) self.btnsLayout.setSpacing(0) self.btnsLayout.setContentsMargins(0, 0, 0, 0) """ Central Layout """ self.centralLayout = QHBoxLayout(self.centralFrame) self.centralLayout.addWidget(self.titleFrame) self.centralLayout.addWidget(self.btnsFrame, 0, Qt.AlignRight) self.centralLayout.setSpacing(0) self.centralLayout.setContentsMargins(0, 0, 0, 0) """ UI Layout """ self.uiLayout = QVBoxLayout(self) self.uiLayout.addWidget(self.centralFrame) self.uiLayout.setContentsMargins(0, 0, 0, 0) self.setLayout(self.uiLayout) def mouseMoveEvent(self, ev): self.ui_main.moveWindow(ev) def resizeClicked(self): if self.ui_main.windowState() == Qt.WindowMaximized: self.ui_main.showNormal() self.setToolTip("Maximize") self.resizeBtn.setIcon(QtGui.QIcon(resource_path("icons/cil-window-maximize.png"))) else: self.ui_main.showMaximized() self.setToolTip("Restore") self.resizeBtn.setIcon(QtGui.QIcon(resource_path("icons/cil-window-restore.png")))
class ToolBar(QFrame): def __init__(self, main_page: QFrame, parent: QFrame): super(ToolBar, self).__init__() self.is_first: bool = False self.main_page: QFrame = main_page self.parent: QFrame = parent self.default_screen_width: int = self.main_page.width() self.default_screen_height: int = self.main_page.height() self.is_drag: bool = True def setup_ui(self, containers: QFrame): # self.pressed:bool = False # self.toolbar_frame = QFrame(containers) self.setMaximumSize(QSize(16777215, 41)) self.setLayoutDirection(Qt.RightToLeft) self.setObjectName(ToolBarStyles.toolbar_minimize_style[0]) self.setStyleSheet(ToolBarStyles.toolbar_minimize_style[1]) self.toolbar_vlayout = QVBoxLayout(self) self.toolbar_vlayout.setContentsMargins(0, 0, 5, 0) self.toolbar_vlayout.setSpacing(0) self.toolbar_vlayout.setObjectName("toolbar_vlayout") self.toolbar_components_frame = QFrame(self) self.toolbar_components_frame.setMinimumSize(QSize(111, 41)) self.toolbar_components_frame.setMaximumSize(QSize(111, 41)) self.toolbar_components_frame.setFrameShape(QFrame.StyledPanel) self.toolbar_components_frame.setFrameShadow(QFrame.Raised) self.toolbar_components_frame.setObjectName("toolbar_components_frame") self.toolbar_components_vlayout = QHBoxLayout(self.toolbar_components_frame) self.toolbar_components_vlayout.setContentsMargins(0, 0, 0, 0) self.toolbar_components_vlayout.setObjectName("toolbar_components_vlayout") self.btn_close = QLabel(self.toolbar_components_frame) self.btn_close.setGeometry(QRect(1310, 5, 23, 23)) self.btn_close.setMaximumSize(23, 23) self.btn_close.setObjectName(ToolBarStyles.btn_close_style[0]) self.btn_close.setCursor(QCursor(Qt.PointingHandCursor)) UtilsClick.clickable(self.btn_close).connect(lambda: QCoreApplication.exit()) self.btn_close.setStyleSheet(ToolBarStyles.btn_close_style[1]) self.toolbar_components_vlayout.addWidget(self.btn_close) self.btn_maximize = QLabel(self.toolbar_components_frame) self.btn_maximize.setGeometry(QRect(1280, 5, 23, 23)) self.btn_maximize.setMaximumSize(23, 23) UtilsClick.clickable(self.btn_maximize).connect(partial(self.maximize_window)) self.btn_maximize.setCursor(QCursor(Qt.PointingHandCursor)) self.btn_maximize.setObjectName(ToolBarStyles.btn_maximize_style[0]) self.btn_maximize.setStyleSheet(ToolBarStyles.btn_maximize_style[1]) self.toolbar_components_vlayout.addWidget(self.btn_maximize) self.btn_minimize = QLabel(self.toolbar_components_frame) self.btn_minimize.setGeometry(QRect(1250, 5, 23, 23)) self.btn_minimize.setMaximumSize(23, 23) self.btn_minimize.setCursor(QCursor(Qt.PointingHandCursor)) UtilsClick.clickable(self.btn_minimize).connect(self.minimized_window) self.btn_minimize.setObjectName(ToolBarStyles.btn_minimize_style[0]) self.btn_minimize.setStyleSheet(ToolBarStyles.btn_minimize_style[1]) self.toolbar_components_vlayout.addWidget(self.btn_minimize) self.toolbar_vlayout.addWidget(self.toolbar_components_frame) def maximize_window(self, x=None, y=None): """this method for maximize windows """ self.is_first = not self.is_first window_width: int = int(QDesktopWidget().screenGeometry(-1).width()) window_height: int = int(QDesktopWidget().screenGeometry(-1).height()) if self.is_first: # when window from minimize to maximize self.parent.setGeometry(0, 0, window_width, window_height) self.parent.lay.setContentsMargins(0, 0, 0, 0) self.main_page.setStyleSheet(ToolBarStyles.main_page_maximaize_style) self.main_page.navigation_menu.setStyleSheet(ToolBarStyles.navigation_maximaize_menu) self.main_page.li_hacktor.setGeometry(QRect(25, self.main_page.height(), 22, 33)) self.setStyleSheet(ToolBarStyles.toolbar_maximaize_style) else: # when window from minimize maximize to minimize if x is None or y is None: """ window minimized go to the center on Screen """ x_window: int = int((window_width - self.default_screen_width) / 2) - 50 y_window: int = int((window_height - self.default_screen_height) / 2) - 50 self.parent.setGeometry(x_window, y_window, self.default_screen_width, self.default_screen_height) else: """ window minimized go to client drag position """ self.parent.setGeometry(x, y, self.default_screen_width, self.default_screen_height) # set setting when minimize self.parent.lay.setContentsMargins(50, 50, 50, 50) self.main_page.setStyleSheet(ToolBarStyles.main_page_minimaize_style) self.main_page.navigation_menu.setStyleSheet(ToolBarStyles.navigation_minimaize_menu) self.setStyleSheet(ToolBarStyles.toolbar_minimize_style[1]) # hacktor-icon end of navigation menu is_extra_screen, extra_screen_width, extra_screen_height = MediaScreen().is_extra_large() if is_extra_screen: self.main_page.li_hacktor.setGeometry(QRect(25, self.main_page.height() - 80, 22, 33)) else: if extra_screen_height > 800: self.main_page.li_hacktor.setGeometry(QRect(25, self.main_page.height() - 80, 22, 33)) else: self.main_page.li_hacktor.setGeometry(QRect(25, self.main_page.height(), 22, 33)) # hide all frame self.main_page.menu.hide_all_frame() self.parent.setCursor(Qt.ArrowCursor) def minimized_window(self): """ this method for do minimize window """ self.parent.setCursor(Qt.ArrowCursor) self.parent.setWindowState(Qt.WindowMinimized) def mousePressEvent(self, event): """this method for when mouse pressed """ if event.buttons() == Qt.LeftButton: self.parent.oldPos = event.globalPos() # component buttons in tool bar not draggable if event.pos().x() <= self.main_page.width() - self.toolbar_components_frame.width(): self.is_drag = True else: self.is_drag = False else: super().mousePressEvent(event) def mouseMoveEvent(self, event): """this method for when mouse drag and moving """ if event.buttons() == Qt.LeftButton and self.is_drag: self.parent.setCursor(Qt.ClosedHandCursor) delta = QPoint(event.globalPos() - self.parent.oldPos) self.parent.move(self.parent.x() + delta.x(), self.parent.y() + delta.y()) self.parent.oldPos = event.globalPos() if self.is_first: x_location = event.pos().x() if x_location >= 900: self.maximize_window(x=x_location - (self.parent.width() / 2), y=event.pos().y() - 74) else: self.maximize_window(x=(self.parent.x() + delta.x()) - 100, y=event.pos().y() - 74) else: super().mouseMoveEvent(event) def mouseReleaseEvent(self, event): """this method for when mouse drop """ self.parent.offset = None self.parent.setCursor(Qt.ArrowCursor) super().mouseReleaseEvent(event)