import os import sys from PyQt5.QtGui import * from PyQt5.QtWidgets import * from PyQt5.QtCore import Qt from view.AddToDoLabel import AddToDoAction class Important(QWidget): def __init__(self): super(Important, self).__init__() self.setObjectName('important') self.setAttribute(Qt.WA_StyledBackground) # todo : 使用网格布局设置背景图 self.setStyleSheet('#important{background-image:url("../images/10.jpg");border-radius: 10px;}') # 布局样式:最外面一个大的垂直布局,里面的最上面标题是一个水平布局,水平布局显示的是一个垂直布局和一个右边的选项,用来更换背景 # 布局样式:继承QWidget,里面一个垂直布局,最上面一个QWidget用来设置头部布局 # 头部QWidget里面一个水平布局,水平布局里面一个QWidget(方便设置整体位置),然后是一个 layout = QVBoxLayout() head_layout = QHBoxLayout() head_widget = QWidget(self) # todo : # head_widget.setMinimumHeight(175) self.todo_list = QListWidget() self.todo_list.setObjectName('todo_list') # todo : 重写QLabel,实现添加功能 # 添加ToDo的标签 self.add_todo = AddToDoAction() self.add_todo.setAlignment(Qt.AlignCenter) # self.add_todo.setPlaceholderText('添加任务') # head_widget.setMaximumHeight(100) # head_widget. # head_widget.setObjectName('head_widget') head_widget.setAttribute(Qt.WA_StyledBackground) # self.setStyleSheet('#head_widget{margin:50px}') # head_widget.setPalette(palette) head_widget.setLayout(head_layout) head_layout.setAlignment(Qt.AlignCenter) # head_left_layout = QVBoxLayout() # layout.addStretch(0) layout.addWidget(head_widget, 2, Qt.AlignTop) # layout.addSpacing(1) # layout.addStretch(0) layout.addWidget(self.todo_list, 6, Qt.AlignCenter | Qt.AlignTop) head_label = QLabel("重要") head_label.setObjectName('head_label') font = QFont() font.setPointSize(32) head_label.setFont(font) layout.addStretch(1) head_layout.addWidget(head_label, 8) layout.addStretch(1) layout.addWidget(self.add_todo, 2, Qt.AlignHCenter) self.menu_image = QPushButton() self.menu_image.setObjectName('menu_image') self.menu_image.setFixedSize(30, 30) # self.menu_image.setScaledContents(True) pic_btn = QPixmap(os.getcwd() + "/../images/menu.png") self.menu_image.setIcon(QIcon(pic_btn)) # self.menu_image.setFixedSize(QPixmap(os.getcwd() + "/../images/menu.png").size()) # head_layout.addLayout(head_left_layout) head_layout.addWidget(self.menu_image, 2) head_layout.addStretch(1) self.setLayout(layout) # self.menu_image.clicked.connect(self.menu_action) button_menu = QMenu(self) # 背景透明 button_menu.setAttribute(Qt.WA_TranslucentBackground) # 无边框、去掉自带阴影 button_menu.setWindowFlags( button_menu.windowFlags() | Qt.FramelessWindowHint | Qt.NoDropShadowWindowHint) self.menu_image.setMenu(button_menu) theme_label = QAction(self) theme_label.setText('主题') theme_label.setDisabled(True) button_menu.addAction(theme_label) button_menu.addSeparator() # button_menu for i in range(11): label_action = QAction(self) label_action.setIcon(QIcon('../images/' + str(i) + '.jpg')) label_action.setText(str(i)) label_action.triggered.connect(lambda: self.menu_action(str(i))) button_menu.addAction(label_action) # todo : 下面的方法实现点击更换主题的功能 def menu_action(self, count): # 点击按钮 # self.menu_label = ChangeTheme() self.setStyleSheet('#important{background-image:url("../images/4.jpg");' 'background-position: center; border-radius: 10px;' '}') print('选中:' + count)