# coding:utf-8
import sys
from PyQt5.QtWidgets import *
import sys #导系统
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
class QTabWidgetDemo(QTabWidget):
def __init__(self):
super(QTabWidgetDemo, self).__init__()
self.resize(400, 150)
#设置窗口标题
self.setWindowTitle("QTabWidgetDemo")
#创建3个选项卡小控件窗口
self.tab1 = QWidget()
self.tab2 = QWidget()
self.tab3 = QWidget()
#将三个选项卡添加到顶层窗口中
self.addTab(self.tab1, "Tab 1")
self.addTab(self.tab2, "Tab 2")
self.addTab(self.tab3, "Tab 3")
#每个选项卡自定义的内容
# self.tab1UI()
# self.tab2UI()
# self.tab3UI()
def tab1UI(self):
#表单布局
layout = QFormLayout()
#添加姓名,地址的单行文本输入框
layout.addRow('姓名',QLineEdit())
layout.addRow('地址',QLineEdit())
#设置选项卡的小标题与布局方式
self.setTabText(0,'联系方式')
self.tab1.setLayout(layout)
def tab2UI(self):
#zhu表单布局,次水平布局
layout = QFormLayout()
sex = QHBoxLayout()
#水平布局添加单选按钮
sex.addWidget(QRadioButton('男'))
sex.addWidget(QRadioButton('女'))
#表单布局添加控件
layout.addRow(QLabel('性别'),sex)
layout.addRow('生日',QLineEdit())
#设置标题与布局
self.setTabText(1,'个人详细信息')
self.tab2.setLayout(layout)
def tab3UI(self):
#水平布局
layout = QHBoxLayout()
#添加控件到布局中
layout.addWidget(QLabel('科目'))
layout.addWidget(QCheckBox('物理'))
layout.addWidget(QCheckBox('高数'))
#设置小标题与布局方式
self.setTabText(2,'教育程度')
self.tab3.setLayout(layout)
class Home(QWidget):
def __init__(self): # 初始化函数
super(Home,self).__init__() # 继承QWidget
self.QTabWidget = QTabWidget()
self.initUi() # 直接调用initUi
def initUi(self):
self.setWindowTitle('学习')#设置标题
self.setWindowIcon(QIcon(''))#设置主页面的looog
#获取显示器分辨率来一边设置 之后的窗口设定
screen = QDesktopWidget().screenGeometry()
# print(screen.width(),screen.height()) #打印粉分辨率大小
self.resize(int(screen.width()/2),int(screen.height()/2) )#设置窗口大小
##——————————————————————————————————————————————————————————>>>>> 主要页面分割
self.main_Form() #初始主 窗体
self.menu_bar() #初始主 菜单栏
spliter1 = QSplitter(Qt.Horizontal) # 创建分割
spliter1.addWidget(self.topleft) # 装入第一个状体
self.tab = QTabWidgetDemo()
spliter1.addWidget(self.tab)
# spliter1.addWidget(self.textedit) # 装入第二个窗体
spliter1.setSizes([100, 600]) # 设置窗体比例 1:6
h_layout = QHBoxLayout(self) # 创建一个布局 水平布局
h_layout.addWidget(spliter1) # 将分割装入横向布局
self.setLayout(h_layout) # 这句没看懂
def main_Form(self):
self.textedit = QFrame() # 创建第二个窗体 调转状体 主窗体
self.textedit.setFrameShape(QFrame.StyledPanel) # 第二个窗体显示横线 调转状体 主窗体
def menu_bar(self): ## 菜单栏
self.topleft = QFrame() # 创建一个窗体 菜单栏窗体 QFrame样式可以更改好多种
self.topleft.setFrameShape(QFrame.StyledPanel) # 窗体显示横线
menu_fapiao = QPushButton('页面', self.topleft) ###创建一个按钮放在 菜单栏窗体中
h_layout = QVBoxLayout(self.topleft) #创建垂直布局
h_layout.addWidget(menu_fapiao) ##将按钮放在垂直布局中
h_layout.addStretch() #弹簧 顶到上面
if __name__ == '__main__':
app = QApplication(sys.argv)
ui = Home()
ui.show() # 显示主出口
app.exec_()