我正在创建一个待办程序。我有一个侧菜单(只是vbox中的qpushbutton)和一个显示内容的主窗口小部件。然而,我需要一种方法来显示不同的内容在主窗口小部件的基础上是什么侧菜单按钮按下。我尝试过使用QStackedLayout,但我不喜欢它关闭主窗口并切换到新窗口的方式。我也尝试过使用QTabWidget,但是标签页在顶部。有没有一种方法可以将QTabWidget子类化并创建一个带有标签按钮的自定义QTabWidget?如果没有,有没有办法?上面的图片就是我目前所拥有的。在

这是我所有的代码:from PyQt5 import QtCore, QtGui, QtWidgets, uic

from PyQt5.QtCore import Qt

from PyQt5.QtWidgets import *

from datetime import date

import sys

months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November",

"December"]

stylesheet = """

QWidget{

background-color: white;

}

QWidget#sideMenuBackground{

background-color: #f7f7f7;

}

QVBoxLayout#sideMenuLayout{

background-color: grey;

}

QPushButton#sideMenuButton{

text-align: left;

border: none;

background-color: #f7f7f7;

max-width: 10em;

font: 16px;

padding: 6px;

}

QPushButton#sideMenuButton:hover{

font: 18px;

}

QLabel#today_label{

font: 25px;

max-width: 70px;

}

QLabel#todays_date_label{

font: 11px;

color: grey;

}

QPushButton#addTodoEventButton{

border: none;

max-width: 130px;

}

"""

class MainWindow(QtWidgets.QMainWindow):

def __init__(self):

super().__init__()

self.setWindowTitle("To-Do Application")

self.setGeometry(200, 200, 800, 500)

self.initUI()

def initUI(self):

self.nextWeekPage = QtWidgets.QLabel()

backgroundWidget = QtWidgets.QWidget()

backgroundWidget.setObjectName("sideMenuBackground")

backgroundWidget.setFixedWidth(150)

layout = QtWidgets.QHBoxLayout()

layout.addWidget(backgroundWidget)

sideMenuLayout = QtWidgets.QVBoxLayout()

sideMenuLayout.setObjectName("sideMenuLayout")

taskLayout = QtWidgets.QVBoxLayout()

backgroundWidget.setLayout(sideMenuLayout)

layout.addLayout(taskLayout)

self.setSideMenu(sideMenuLayout)

sideMenuLayout.addStretch(0)

self.setMainLayout(taskLayout)

taskLayout.addStretch(0)

mainWidget = QtWidgets.QWidget()

mainWidget.setLayout(layout)

self.setCentralWidget(mainWidget)

def setSideMenu(self, layout):

self.todayButton = QtWidgets.QPushButton(" Today")

self.nextWeekButton = QtWidgets.QPushButton("Next 7 Days")

self.calendarButton = QtWidgets.QPushButton("Calendar")

sideMenuButtons = [self.todayButton, self.nextWeekButton, self.calendarButton]

for button in sideMenuButtons:

button.setObjectName("sideMenuButton")

layout.addWidget(button)

sideMenuButtons[0].setIcon(QtGui.QIcon("today icon.png"))

sideMenuButtons[1].setIcon(QtGui.QIcon("week icon.png"))

sideMenuButtons[2].setIcon(QtGui.QIcon("calendar icon.png"))

sideMenuButtons[0].pressed.connect(self.todayButtonPress)

sideMenuButtons[1].pressed.connect(self.nextWeekButtonPress)

sideMenuButtons[2].pressed.connect(self.calendarButtonPress)

def setMainLayout(self, layout):

today_label_widget = QtWidgets.QWidget()

today_label_layout = QtWidgets.QHBoxLayout()

layout.addWidget(today_label_widget)

today_label_widget.setLayout(today_label_layout)

month = date.today().month

day = date.today().day

today = f"{months[month - 1]}{day}"

self.todays_date = QtWidgets.QLabel(today)

self.todays_date.setObjectName("todays_date_label")

self.today_label = QtWidgets.QLabel("Today")

self.today_label.setObjectName("today_label")

self.addTodoEventButton = QtWidgets.QPushButton()

self.addTodoEventButton.setObjectName("addTodoEventButton")

self.addTodoEventButton.setIcon(QtGui.QIcon("add event button.png"))

self.addTodoEventButton.setToolTip("Add To Do Event")

today_label_layout.addWidget(self.today_label)

today_label_layout.addWidget(self.todays_date)

today_label_layout.addWidget(self.addTodoEventButton)

self.labels = ["button1", "button2", "button3", "button4", "Button5"]

for today_events in self.labels:

label = QtWidgets.QLabel(today_events)

layout.addWidget(label)

def addTodoEvent(self):

pass

def todayButtonPress(self):

print("today button pressed")

def nextWeekButtonPress(self):

print("Next week button pressed")

def calendarButtonPress(self):

print("calendar button pressed")

def main():

app = QtWidgets.QApplication(sys.argv)

app.setStyleSheet(stylesheet)

window = MainWindow()

window.show()

app.exec_()

if __name__ == "__main__":

main()

python多窗口显示内容_如何在一个窗口中显示多个页面?相关推荐

  1. 中间显示内容_在Excel表格中,你知道编辑栏吗?可以编辑公式和录入内容

    我们在利用Excel制作表格时,在工作区和选项卡中间有一个编辑栏(如下图所示),当选中某个单元格后,单元格中的内容会自动显示在编辑栏中,我们也可以在编辑栏中录入.修改公式或内容,但编辑栏默认只显示一行 ...

  2. word中图片为嵌入式格式时显示不全_图片在word中显示不全怎么处理_word图片显示不全怎么办-win7之家...

    我们在编辑word文档时,会需要插入一些图片来做为装饰或者用来标识,也会出现插入的图片显示不全的情况,要是遇到这种情况该怎么办,那么图片在word中显示不全要怎么处理呢,下面小编给大家分享图片在wor ...

  3. mfc cedit 默认显示内容_拼多多评价不显示的几大原因,看完之后才知道是触碰了这几个环节...

    在网上购物之所以能够让很多人接受的原因其实就是因为评价这个系统的存在,虽然在网上购买商品的人都是来自全国各地的陌生人,但是,每一个购买商品的人都是有权利在商品下面留下自己对产品的使用感受的,也就是评价 ...

  4. matlab 图片最多显示几张_matlab在一个figure中显示多幅图像

    以显示2行3列为例: subplot(2,3,1);imshow("1.jpg"); title('first img','fontname','Times New Roman', ...

  5. 日历代码 谷歌无法显示当日_在Windows日历中显示您的Google日历

    日历代码 谷歌无法显示当日 Windows Vista includes a built-in calendar application that's pretty slick, but as an ...

  6. iOS10 UI教程基础窗口的内容与设置起始窗口

    iOS10 UI教程基础窗口的内容与设置起始窗口 iOS10 UI教程基础窗口的内容与设置起始窗口,本章我们从iOS10开发中UI的基础知识开始讲解,其中包括了窗口.视图以及UI层次结构和Views的 ...

  7. python3 xml 取标签显示内容_如何应用“XML+XSLT”技术分离Web表示层数据和样式

    软件项目实训及课程设计指导--如何应用XML+XSLT技术分离Web表示层数据和样式 1."XML+XSLT"技术在J2EE技术平台中的应用 Java语言及相关的应用技术的产生解决 ...

  8. 鼠标指针放置上面,显示内容_使鼠标指针远离您键入的内容

    鼠标指针放置上面,显示内容 If your mouse pointer seems to constantly get in the way while you are typing, you are ...

  9. python读压缩文件内容_使用Python读写及压缩和解压缩文件的示例

    读写文件 首先看一个例子: f = open('thefile.txt','w') #以写方式打开, try: f.write('wokao') finally: f.close() 文件的打开方式: ...

最新文章

  1. python嵌套循环效率_Python嵌套循环数组比较优化的可能性?
  2. python3 多进程库 multiprocessing 使用简介
  3. 计算器 abacus 技术文档之二----初步设计
  4. 【推荐系统】基于物品的协同过滤算法
  5. php 链接excel表格数据,php 怎么把数据导出到excel表格?php 连接 excel表格数据库数据...
  6. 【数据结构与算法】之深入解析“螺旋矩阵II”的求解思路与算法示例
  7. 利用Contained Database和DAC来开发基于SQL Server Denali和SQL Azure之上的应用程序
  8. Windows 2012 - Dynamic Access Control 浅析
  9. mysql分页原理和sqlserver里面序列的用法
  10. mysql视图表怎么设置约束_MySQL一一sql的视图、索引、约束
  11. 还有什么事情AI做不了?
  12. 华为诉争“鸿蒙HongMeng”商标再被驳回;比尔盖茨夫妇正式离婚;iOS 15“查找”新功能,关机也能用|极客头条...
  13. 准备在北京Tech·Ed上组织博客园聚会
  14. Handler sendMessage 与 obtainMessage (sendToTarget)比较
  15. MapInfo启动时,提示the Microsoft jet engine is not available
  16. flink源码分析_源码解析 | 万字长文详解 Flink 中的 CopyOnWriteStateTable
  17. android通讯录加密,一种手机通讯录加解密方式
  18. mpa和pis_压力单位MPa/psi/bar之间的换算?
  19. 学计算机物理去戴维斯还是伦斯勒理工学院好,去伦斯勒理工学院留学,优势竟然这么多...
  20. php或js判断网站访问者来自手机或者pc机

热门文章

  1. 时代潮流-云原生数据库的崛起
  2. 计算机二级考试失误有提示吗,2016年计算机二级考试应该避免的失误
  3. Shopify卖家:EDM营销就要搭配SaleSmartly,轻松搞定转化率
  4. 警惕非上架应用的下载和使用
  5. 【MySQL从入门到精通】【高级篇】(九)InnoDB的B+树索引的注意事项
  6. 深度搜索(DFS)和广度搜索(BFS)
  7. Node.js Websocket 井字棋游戏
  8. pycharm 最上面的快速定位标签_受用一生的高效 PyCharm 使用技巧(四)
  9. pdf合并与拆分软件的使用
  10. 扯淡: 什么是团队精神 管理 沟通