【无标题】0916

import sys
import math
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import Qt  # 有一些常量在这里面,eg:blue
from PyQt5.QtCore import *  # 日历控件


# 下面两行:改任务栏图标,Windows系统需要
# import ctypes
# ctypes.windll.shell32.SetCurrentProcessExplicitAppUserModelID("myappid")


class FirstMainWin(QTabWidget):  # 直接一整个屏幕就是一个选项卡窗口
    def __init__(self, parent=None):
        super(FirstMainWin, self).__init__(parent)

        """1、标题尺寸窗口图标"""
        self.setWindowTitle('first mainWindow app')
        # x,y,w,h  & self.resize(1800,1200)
        self.setGeometry(100, 300, 1800, 1200)
        self.setWindowIcon(QIcon('icon/window_icon.jpeg'))

        '''2、创建用于显示控件的窗口'''
        self.tab1 = QWidget()
        self.tab2 = QWidget()
        self.tab3 = QWidget()
        # 将窗口和选项卡绑定
        self.addTab(self.tab1, 'tab1')
        self.addTab(self.tab2, 'tab2')
        self.addTab(self.tab3, 'tab3')

        self.tab1UI()
        self.tab2UI()
        self.tab3UI()

        '''----------------------------------'''
        # central_Qwidget = self.centralWidget()
        # self.initUI()

    '''===============================布局函数的分割线1==============================='''
    # 表单布局

    def tab1UI(self):
        #=========================创建对象===========================

        addBtn = QPushButton('添加')
        updateBtn = QPushButton('修改')
        deleteBtn = QPushButton('删除')
        self.tree = QTreeWidget()  # 树
        label1 = QLabel(self)
        label2 = QLabel(self)
        self.btn1_pic = QPushButton('加载图片')
        self.btn2_file = QPushButton('加载文本文件')
        # 用标签来作为显示图片的地方
        self.imageLabel = QLabel()
        # 多行编辑框
        self.contents = QTextEdit()     # 加self.可以在类里的其它函数里调用
        self.dialog = QFileDialog()

        # self.label1_tea = QLabel('茶底')
        combox1_tea = QComboBox()
        combox2_ice = QComboBox()
        radio3_sugar = QRadioButton('冰糖浆')
        radio4_juice = QRadioButton('果汁')

        self.checkbox5_fruit = QCheckBox('水果')
        self.checkbox6_milk = QCheckBox('奶类')
        combox7_extra = QComboBox()

        # 默认选中
        self.checkbox5_fruit.setChecked(True)  # 此函数只有两种状态
        self.checkbox5_fruit.stateChanged.connect(
            lambda: self.checkboxState(self.checkbox5_fruit))

        self.checkbox6_milk.stateChanged.connect(
            lambda: self.checkboxState(self.checkbox6_milk))

        # self.checkbox3 = QCheckBox('半选中控件3')
        # # 设置选中有三个状态(即允许半选中)
        # self.checkbox3.setTristate(True)
        # # setCheckState函数有三种状态:Unchecked,PartiallyChecked,Checked
        # self.checkbox3.setCheckState(Qt.PartiallyChecked)
        # self.checkbox3.stateChanged.connect(
        #     lambda: self.checkboxState(self.checkbox3))
        # layout.addWidget(self.checkbox3)

        #==========================控件设置============================
        #--------------------------label设置--------------------------
        label1.setText('<font color = red><b>本篇内容来源于b站up主萨古的奶茶计划</b></font>')
        label1.setAlignment(Qt.AlignRight)  # 右对齐

        # 如果设为True,用浏览器打开网页,如果设为False,调用槽函数(我为啥要调用槽函数啊我晕)
        label2.setOpenExternalLinks(True)
        label2.setAutoFillBackground(True)  # 自动填充背景(可以,但没必要==)
        label2.setText(
            "<font color = blue><b><a href='https://space.bilibili.com/511644921'>不懂不懂我百度一下</a></b></font>")
        label2_palette = QPalette()
        label2_palette.setColor(QPalette.Window, Qt.lightGray)  # 设置背景色
        # 对label1设置调色板,这个地方好奇怪。。我前面写错成了label1,颜色就变了?
        label1.setPalette(label2_palette)
        label2.setAlignment(Qt.AlignRight)
        label2.setToolTip('点这里鸭点这里')

        #---------------------------tree设置----------------------------
        # 为树控件指定列数
        self.tree.setColumnCount(2)
        # 指定列标签
        self.tree.setHeaderLabels(['产品', '点击详情'])

        '''根节点'''
        root = QTreeWidgetItem(self.tree)
        root.setText(0, '奶茶品牌')  # 0代表第一列,即Key列,值为root
        root.setText(1, '详细信息')

        # 这两行不知道有用没
        root.setIcon(0, QIcon('../picture/bag/bag1.jpg'))  # 为节点设置图标
        self.tree.setColumnWidth(0, 500)  # 第一列列宽设为200

        '''=====这个地方应该可以弄个循环啥的吧或者读取数据之类的==='''
        # 添加子节点child1
        child1 = QTreeWidgetItem(root)
        child1.setText(0, '喜茶')  # 设置key
        child1.setText(1, '1')  # 设置value
        child1.setIcon(0, QIcon('../picture/bag/bag2.jpg'))

        # 为child1添加一个子节点child1_1
        child1_1 = QTreeWidgetItem(child1)
        child1_1.setText(0, '多肉桃李')
        child1_1.setText(1, '1_1')
        child1_1.setIcon(0, QIcon('../picture/bag/bag2.jpg'))

        # 添加子节点child2
        child2 = QTreeWidgetItem(root)
        child2.setText(0, '柰雪的茶')
        child2.setText(1, '2')
        child2.setIcon(0, QIcon('../picture/bag/bag3.jpg'))

        # 为child2添加一个子节点child2_1
        child2_1 = QTreeWidgetItem(child2)
        child2_1.setText(0, '霸气柠檬')
        child2_1.setText(1, '2_1')
        child2_1.setIcon(0, QIcon('../picture/bag/bag2.jpg'))
        # 默认所有节点都处于展开状态
        self.tree.expandAll()

        #--------------------------combobox---------------------------
        combox1_tea.addItems(['茉莉花', '四季春', '锡兰红茶', '绿茶', '乌龙茶'])
        combox2_ice.addItem('冰块和水')

        # radio3_sugar.addItem('冰糖浆')
        # radio4_juice.addItem('果汁')

        # self.checkbox5_fruit.addItems(['柠檬', '百香果', '杨梅', '车厘子', '芒果', '西瓜'])
        # self.checkbox6_milk.addItems(['牛奶', '椰奶', '椰乳', '椰子水', '咖啡'])

        combox7_extra.addItems(['有小料', '无小料'])   # 芝士

        # # 每一项都对应一个下标索引
        # self.cb.currentIndexChanged.connect(
        #     self.selectionChange)  # 此信号默认传递两个参数(控件本身,索引)

        # layout.addWidget(self.label)
        # layout.addWidget(self.cb)

        radio3_sugar.setChecked(True)

        #==========================信号与槽绑定===========================
        self.tree.clicked.connect(self.onTreeClicked)

        addBtn.clicked.connect(self.addNode)
        updateBtn.clicked.connect(self.updateNode)
        deleteBtn.clicked.connect(self.deleteNode)
        self.btn1_pic.clicked.connect(self.loadImage)
        self.btn2_file.clicked.connect(self.loadText)
        # toggled是状态切换的信号
        radio4_juice.toggled.connect(self.buttonState)

        # =========================布局==============================
        operatorLayout = QHBoxLayout()
        browserLayout = QVBoxLayout()
        # materialLayout = QVBoxLayout()

        operatorLayout.addWidget(addBtn)
        operatorLayout.addWidget(updateBtn)
        operatorLayout.addWidget(deleteBtn)

        browserLayout.addWidget(label1)
        browserLayout.addWidget(label2)

        # materialLayout.addWidget(combox1_tea)
        # materialLayout.addWidget(combox2_fruit)
        # materialLayout.addWidget(combox3_milk)
        # materialLayout.addWidget(combox4_sugar)
        # materialLayout.addWidget(combox5_ice)
        # materialLayout.addWidget(combox6_juice)

        gridLayout = QGridLayout()

        gridLayout.addLayout(operatorLayout, 1, 1, 1, 3)
        gridLayout.addWidget(self.btn2_file, 1, 7, 1, 1)
        gridLayout.addWidget(self.btn1_pic, 1, 14, 1, 1)

        gridLayout.addWidget(self.tree, 2, 1, 8, 3)
        gridLayout.addWidget(self.contents, 2, 5, 5, 5)
        gridLayout.addWidget(self.imageLabel, 2, 12, 5, 5)

        # gridLayout.addWidget(materialLayout, 1, 16, 6, 2)
        gridLayout.addWidget(combox1_tea, 5, 7, 1, 2)
        gridLayout.addWidget(combox2_ice, 8, 7, 1, 2)
        gridLayout.addWidget(radio3_sugar, 5, 8, 1, 2)
        gridLayout.addWidget(radio4_juice, 8, 8, 1, 2)
        gridLayout.addWidget(self.checkbox5_fruit, 5, 9, 1, 2)
        gridLayout.addWidget(self.checkbox6_milk, 5, 9, 1, 2)

        gridLayout.addLayout(browserLayout, 16, 11, 2, 3)

        # layout.addRow('地址', QLineEdit())

        '''将第一个选项卡窗口重命名'''
        self.setTabText(0, '来点喝的吧')
        self.tab1.setLayout(gridLayout)  # 别忘了tab1就是一个窗口

    def tab2UI(self):
        form2 = QFormLayout()
        hbox2_1 = QHBoxLayout()  # 水平布局,横向排列
        hbox2_1_button1 = QPushButton('预算')
        hbox2_1_button2 = QPushButton('添加')
        hbox2_1_button3 = QPushButton('图表')
        # 单选框
        hbox2_1.addWidget(hbox2_1_button1)
        hbox2_1.addWidget(hbox2_1_button2)
        hbox2_1.addWidget(hbox2_1_button3)

        '''表格'''

        tableWidget = QTableWidget()
        # 4行3列
        tableWidget.setRowCount(10)
        tableWidget.setColumnCount(6)

        tableWidget.setHorizontalHeaderLabels(
            ['日期', '星期', '收入/支出', '金额(元)', '分类', '备注'])

        textItem = QTableWidgetItem('20220914')
        # setItem:将文本放到单元格中
        tableWidget.setItem(0, 0, textItem)

        # combox设置
        combox_week2 = QComboBox()
        combox_week2.addItems(
            ['星期1', '星期2', '星期3', '星期4', '星期5', '星期六', '星期日'])

        combox_3 = QComboBox()
        combox_3.addItem('收入')
        combox_3.addItem('支出')

        combox_5 = QComboBox()
        combox_5.addItem('餐饮')
        combox_5.addItem('交通')
        combox_5.addItem('服饰')
        combox_5.addItem('购物')
        combox_5.addItem('服务')
        combox_5.addItem('教育')
        combox_5.addItem('游戏')
        combox_5.addItem('运动')
        combox_5.addItem('生活缴费')
        combox_5.addItem('旅行')
        combox_5.addItem('医疗')
        combox_5.addItem('人情')
        combox_5.addItem('保险')
        combox_5.addItem('其他')

        # setStyleSheet设置控件的样式(QSS)(类似于web中的CSS),即Qt StyleSheet(n.样式表)
        combox_week2.setStyleSheet(
            'QComboBox{margin:3px};')  # 设置控键距离上下左右的单元格的距离(距离)
        # 设置控键距离上下左右的单元格的距离(距离)
        combox_3.setStyleSheet('QComboBox{margin:3px};')
        # 设置控键距离上下左右的单元格的距离(距离)
        combox_5.setStyleSheet('QComboBox{margin:3px};')

        # setCellWidget:将控件放到单元格中
        tableWidget.setCellWidget(0, 1, combox_week2)
        tableWidget.setCellWidget(1, 1, combox_week2)
        tableWidget.setCellWidget(2, 1, combox_week2)
        tableWidget.setCellWidget(3, 1, combox_week2)
        tableWidget.setCellWidget(4, 1, combox_week2)
        tableWidget.setCellWidget(5, 1, combox_week2)
        tableWidget.setCellWidget(6, 1, combox_week2)
        tableWidget.setCellWidget(7, 1, combox_week2)
        tableWidget.setCellWidget(8, 1, combox_week2)
        tableWidget.setCellWidget(9, 1, combox_week2)
        tableWidget.setCellWidget(10, 1, combox_week2)

        tableWidget.setCellWidget(0, 2, combox_3)
        tableWidget.setCellWidget(1, 2, combox_3)
        tableWidget.setCellWidget(2, 2, combox_3)
        tableWidget.setCellWidget(3, 2, combox_3)
        tableWidget.setCellWidget(4, 2, combox_3)
        tableWidget.setCellWidget(5, 2, combox_3)
        tableWidget.setCellWidget(6, 2, combox_3)
        tableWidget.setCellWidget(7, 2, combox_3)
        tableWidget.setCellWidget(8, 2, combox_3)
        tableWidget.setCellWidget(9, 2, combox_3)
        tableWidget.setCellWidget(10, 2, combox_3)

        tableWidget.setCellWidget(0, 4, combox_5)
        tableWidget.setCellWidget(1, 4, combox_5)
        tableWidget.setCellWidget(2, 4, combox_5)
        tableWidget.setCellWidget(3, 4, combox_5)
        tableWidget.setCellWidget(4, 4, combox_5)
        tableWidget.setCellWidget(5, 4, combox_5)
        tableWidget.setCellWidget(6, 4, combox_5)
        tableWidget.setCellWidget(7, 4, combox_5)
        tableWidget.setCellWidget(8, 4, combox_5)
        tableWidget.setCellWidget(9, 4, combox_5)
        tableWidget.setCellWidget(10, 4, combox_5)

        # modifyButton = QPushButton('修改')
        # # 默认是按下的状态
        # modifyButton.setDown(True)
        # modifyButton.setStyleSheet('QPushButton{margin:3px};')
        # tableWidget.setCellWidget(0, 2, modifyButton)

        '''
        self.model = QStandardItemModel(10, 6)  # 二维表10行5列
        # 数据表的字段
        self.model.setHorizontalHeaderLabels(
            ['日期', '星期', '收入&支出', '金额', '分类', '备注'])
        self.tableView = QTableWidget()
        # 关联QTableView控件和Model
        self.tableView.setModel(self.model)
        # 添加数据
        item11 = QStandardItem('20220914')  # 一个QStandardItem就是一个单元格
        item12 = QStandardItem('星期三')     # combobox?
        item13 = QStandardItem('支出')       # 应该比combobox更简单
        item14 = QStandardItem('21.38')     # 输入框,浮点数,两位小数
        item15 = QStandardItem('餐饮')       # combobox:
        item16 = QStandardItem('午饭')       # 长一点。。30字符?
        self.model.setItem(0, 0, item11)
        self.model.setItem(0, 1, item12)
        self.model.setItem(0, 2, item13)
        self.model.setItem(0, 3, item14)
        self.model.setItem(0, 4, item15)
        self.model.setItem(0, 5, item16)
        '''

        '''信号与槽绑定'''
        hbox2_1_button1.clicked.connect(self.showDialog)

        # sex.addWidget(QRadioButton('女'))
        form2.addRow(hbox2_1)
        form2.addRow(tableWidget)
        # grid2.addRow('生日', QLineEdit())
        self.setTabText(1, '记账本')
        self.tab2.setLayout(form2)

    def tab3UI(self):
        '''创建控件的实例,注意Mac与windows的布局问题'''
        '''1、日历'''
        self.cal = QCalendarWidget(self)
        # 设置允许显示的最大/小日期
        self.cal.setMinimumDate(QDate(1900, 1, 1))
        self.cal.setMaximumDate(QDate(2100, 1, 1))
        # 以网格形式显示
        self.cal.setGridVisible(True)
        # 移动位置
        self.cal.move(200, 200)

        # # 标签
        # self.label = QLabel(self)
        # # 获取当前日期
        # date = self.cal.selectedDate()
        # # 格式化
        # self.label.setText(date.toString('yyyy-MM-dd dddd'))  # mm不行
        # self.label.move(600, 700)

        # 信号与槽
        self.cal.clicked.connect(self.showDate)

        '''2、日期和时间'''
        self.label_dateTimeEdit1 = QLabel(self)
        self.label_dateTimeEdit2 = QLabel(self)
        self.label_dateEdit = QLabel(self)
        self.label_timeEdit = QLabel(self)

        self.label_dateTimeEdit1.setText('时间编辑')
        self.label_dateTimeEdit2.setText('当前时间')
        self.label_dateEdit.setText('日期')
        self.label_timeEdit.setText('时间')

        dateTimeEdit1 = QDateTimeEdit()
        dateTimeEdit2 = QDateTimeEdit(QDateTime.currentDateTimeUtc())  # 传入当前时间

        dateEdit = QDateTimeEdit(QDate.currentDate())  # 传入当前日期
        timeEdit = QDateTimeEdit(QTime.currentTime())  # 传入当前日期

        dateTimeEdit1.setDisplayFormat('yyyy-MM-dd HH:mm:ss')
        dateTimeEdit2.setDisplayFormat('yyyy/MM/dd HH:mm:ss')

        dateEdit.setDisplayFormat('yyyy.MM.dd')
        timeEdit.setDisplayFormat('HH:mm:ss')

        '''3、设置字体'''
        self.fontBtn = QPushButton('选择字体')
        self.fontLabel = QLabel('这里显示字体')

        '''4、设置颜色'''

        self.colorBtn = QPushButton('设置字体颜色')
        self.colorBackBtn = QPushButton('设置背景颜色')
        self.colorLabel_button = QLabel('这里显示字体颜色')
        self.colorLabel_background = QLabel('这里显示背景颜色')
        '''5、动态时间'''

        self.label_rightnow_time = QLabel('显示当前时间')
        self.startBtn = QPushButton('开始')
        self.endBtn = QPushButton('结束')

        # 计时器对象
        self.timer = QTimer()
        self.timer.timeout.connect(self.showrightnowTime)

        '''5、滚动条'''
        self.label = QLabel(
            '拖动第一个滚动条颜色变红,\n拖动第二个滚动条颜色变绿,\n拖动第三个滚动条颜色变蓝,\n拖动第四个滚动条滚动')  # 文字内容

        self.scrollbar1 = QScrollBar()  # 滚动条
        self.scrollbar2 = QScrollBar()
        self.scrollbar3 = QScrollBar()
        self.scrollbar4 = QScrollBar()

        self.scrollbar1.setMaximum(1200)  # 滚动条最大值
        self.scrollbar2.setMaximum(1200)
        self.scrollbar3.setMaximum(1200)
        self.scrollbar4.setMaximum(1200)

        '''创建栅格布局'''
        grid3 = QGridLayout()

        '''控件间距'''
        grid3.setSpacing(100)

        '''添加控件'''
        # 行row,列column(可以从0开始),空间上占的行数,空间上占得列数
        # button可以不设置长度的,直接写坐标就好了
        grid3.addWidget(self.cal, 1, 1, 5, 3)
        grid3.addWidget(self.label_dateTimeEdit1, 1, 4, 1, 1)
        grid3.addWidget(self.label_dateTimeEdit2, 2, 4, 1, 1)
        grid3.addWidget(self.label_dateEdit, 3, 4, 1, 1)
        grid3.addWidget(self.label_timeEdit, 4, 4, 1, 1)
        grid3.addWidget(self.label_rightnow_time, 5, 4, 1, 1)

        grid3.addWidget(dateTimeEdit1, 1, 5, 1, 1)
        grid3.addWidget(dateTimeEdit2, 2, 5, 1, 1)
        grid3.addWidget(dateEdit, 3, 5, 1, 1)
        grid3.addWidget(timeEdit, 4, 5, 1, 1)
        grid3.addWidget(self.startBtn, 5, 5, 1, 1)
        grid3.addWidget(self.endBtn, 5, 6, 1, 1)

        grid3.addWidget(self.fontBtn, 1, 7, 1, 1)
        grid3.addWidget(self.fontLabel, 1, 8, 1, 1)
        grid3.addWidget(self.colorBtn, 2, 7, 1, 1)
        grid3.addWidget(self.colorLabel_button, 2, 8, 1, 1)
        grid3.addWidget(self.colorBackBtn, 3, 7, 1, 1)
        grid3.addWidget(self.colorLabel_background, 3, 8, 1, 1)

        grid3.addWidget(self.label, 1, 9, 7, 2)
        grid3.addWidget(self.scrollbar1, 1, 11, 7, 1)
        grid3.addWidget(self.scrollbar2, 1, 12, 7, 1)
        grid3.addWidget(self.scrollbar3, 1, 13, 7, 1)
        grid3.addWidget(self.scrollbar4, 1, 14, 7, 1)
        self.y = self.label.pos().y()

        '''槽'''

        self.cal.clicked.connect(self.showDate)
        self.fontBtn.clicked.connect(self.getFont)
        self.colorBtn.clicked.connect(self.getColor)
        self.colorBackBtn.clicked.connect(self.getBackColor)

        self.scrollbar1.sliderMoved.connect(self.sliderMoved)
        self.scrollbar2.sliderMoved.connect(self.sliderMoved)
        self.scrollbar3.sliderMoved.connect(self.sliderMoved)
        self.scrollbar4.sliderMoved.connect(self.sliderMoved1)

        self.startBtn.clicked.connect(self.startTimer)
        self.endBtn.clicked.connect(self.endTimer)

        '''加布局到total上'''

        self.setTabText(2, '小工具')
        self.tab3.setLayout(grid3)  # 加布局

    '''=============================功能函数的分割线2=============================='''
    # 1-1-1 添加节点

    def addNode(self):
        print('添加')
        item = self.tree.currentItem()  # 获得当前结点
        print('当前节点是:', item)
        node = QTreeWidgetItem(item)
        node.setText(0, '新节点')
        node.setText(1, '新值')

    # 1-1-2 修改节点
    def updateNode(self):
        print('修改')
        item = self.tree.currentItem()
        item.setText(0, '修改节点')
        item.setText(1, '值已经被修改')

    # 1-1-3 删除节点
    def deleteNode(self):
        print('删除')
        # 防止item是root时,root无父结点报错,要使用下面的写法
        rootFather = self.tree.invisibleRootItem()  # 获得根节点root的不可见的父节点
        for item in self.tree.selectedItems():
            # 父节点不为空
            (item.parent() or rootFather).removeChild(item)

    # 1-2、树的槽
    def onTreeClicked(self, index):  # index是被点击节点的索引
        item = self.tree.currentItem()  # 获得当前单击项
        print('当前处于第%d行' % index.row())  # 输出当前行(自己父节点的第几个值)
        print('key=%s,value=%s' % (item.text(0), item.text(1)))
        print()

    # 1-3-1-1 文件图片对话框-槽函数
    def loadImage(self):
        # 参数三是默认路径(自己随便设),参数四是过滤哪些文件,比如下面就是只显示jpg或者png文件
        # fname,a=QFileDialog.getOpenFileName(self,'打开文件','.','图像文件(*.jpg *.png)')
        fname, _ = QFileDialog.getOpenFileName(
            self, '打开文件', 'D:\\', '图像文件(*.jpg *.png)')
        print(fname)
        print(_)
        self.imageLabel.setPixmap(QPixmap(fname))

    # 1-3-1-2 文件图片对话框-设置过滤器
    def loadText(self):
        # 设置打开文件模式
        self.dialog.setFileMode(QFileDialog.AnyFile)  # 任何文件
        # 设置过滤器,只显示过滤器允许的文件类型
        self.dialog.setFilter(QDir.Files)  # ?????????
        if self.dialog.exec():
            # 选择文件
            filenames = self.dialog.selectedFiles()
            print(filenames)  # 列表,就一个元素,就是选中的文件的绝对路径
            f = open(filenames[0], mode='r', encoding='utf-8')  # 打开第一个文件
            # with会自动调用文件的close()函数,防止我们忘记
            with f:
                data = f.read()
                self.contents.setText(data)

    # combobox
    # def selectionChange(self, i):
    #    # 标签会随着当前选中的下拉项而改变
    #    self.label.setText(self.cb.currentText())
    #    self.label.adjustSize()

    #    for j in range(self.cb.count()):
    #        print('item' + str(j) + '=' + self.cb.itemText(j))

    #    print('current index', i, 'selection changed', self.cb.currentText())

    # radiobutton
    def buttonState(self):
        radiobtn = self.sender()
        if radiobtn.isChecked() == True:
            print('<' + radiobtn.text() + '>被选中')
        else:
            print('<' + radiobtn.text() + '>被取消选中状态')
        # 同意容器下单选按钮是互斥的,所以不必利用radiobtn.text()来分情况判断
        '''
        if radiobtn.text()=='单选按钮1':
            # 是否被选中
            if radiobtn.isChecked()==True:
                print('<'+radiobtn.text()+'>被选中')
            else:
                print('<'+radiobtn.text()+'>被取消选中状态')
        if radiobtn.text()=='单选按钮2':
            if radiobtn.isChecked()==True:
                print('<'+radiobtn.text()+'>被选中')
            else:
                print('<'+radiobtn.text()+'>被取消选中状态')'''

    #   checkbox
    def checkboxState(self, cb):
        check1Status = self.checkbox1.text() + ',isChecked=' + str(self.checkbox1.isChecked()) + \
            ',isCheckstate=' + str(self.checkbox1.checkState()) + '\n'
        check2Status = self.checkbox2.text() + ',isChecked=' + str(self.checkbox2.isChecked()) + \
            ',isCheckstate' + str(self.checkbox2.checkState()) + '\n'
        check3Status = self.checkbox3.text() + ',isChecked=' + str(self.checkbox3.isChecked()) + \
            ',isCheckstate' + str(self.checkbox3.checkState()) + '\n'
        print(check1Status + check2Status + check3Status)

    '''~~~~~~~~~~~~~~~~~~~~~~~~tab2函数~~~~~~~~~~~~~~~~~~~~~~~~~'''

    # 2-1-2 消息对话框
    def showDialog(self):
        text = self.sender().text()
        if text == '预算':
            QMessageBox.about(self, '预算', '这是预算')

    '''~~~~~~~~~~~~~~~~~~~~~~~~tab3函数~~~~~~~~~~~~~~~~~~~~~~~~~'''

    # 3-1 日历
    def showDate(self, date):
        # self.label.setText(date.toString('yyyy-MM-dd dddd'))
        self.label.setText(self.cal.selectedDate().toString('yyyy-MM-dd dddd'))

    # 3-2-1-1 动态时间:显示当前时间
    def showrightnowTime(self):
        time = QDateTime.currentDateTime()
        # dddd是星期几
        timeDispaly = time.toString('yyyy-MM-dd hh:mm:ss dddd')
        # 将标签设置成当前时间
        self.label.setText(timeDispaly)

    # 3-2-1-2 动态时间,
    def startTimer(self):
        # 参数是时间间隔,1000毫秒
        self.timer.start(1000)
        self.startBtn.setEnabled(False)  # 不能按
        self.endBtn.setEnabled(True)  # 可以按

    # 3-2-1-3 停止计时
    def endTimer(self):
        # 停止计时
        self.timer.stop()
        self.startBtn.setEnabled(True)
        self.endBtn.setEnabled(False)

    # 3-3-1 字体
    def getFont(self):
        (font, ok) = QFontDialog.getFont()
        if ok:
            self.fontLabel.setFont(font)

    # 3-3-3-1 字体颜色
    def getColor(self):
        color = QColorDialog.getColor()
        # 调色板
        p = QPalette()
        # 注意WindowText(这是类属性,常量)的大小写,这是常量,别选错了!!!!
        p.setColor(QPalette.WindowText, color)
        # pycharm中自动补全代码提示前符号(eg:f是Field,类属性,常量)的意思:https://blog.youkuaiyun.com/lemon4869/article/details/101263102
        # print('QPalette.WindowText =',QPalette.WindowText )
        # print('QPalette.Window =',QPalette.Window)
        print('QPalette.WindowText =', QPalette.WindowText)
        print('QPalette.Window =', QPalette.Window)
        self.colorLabel_button.setPalette(p)

    # 3-3-3-2 背景颜色
    def getBackColor(self):
        color = QColorDialog.getColor()
        p = QPalette()
        p.setColor(QPalette.Window, color)
        # 自动填充背景
        self.colorLabel_background.setAutoFillBackground(True)
        self.colorLabel_background.setPalette(p)

    # 3-5-1 滚动条变颜色
    def sliderMoved(self):
        print(self.scrollbar1.value(),
              self.scrollbar2.value(), self.scrollbar3.value())
        # 调色版
        palette = QPalette()
        # 最后一个参数是透明度
        c = QColor(self.scrollbar1.value(), self.scrollbar2.value(),
                   self.scrollbar3.value(), 255)
        # 参数一:QPalette.Foreground设置前景色,即标签的颜色  参数2:颜色
        palette.setColor(QPalette.Foreground, c)
        self.label.setPalette(palette)

    # 3-5-2 滚动条上下移动
    def sliderMoved1(self):
        # 向下移动标签
        self.label.move(self.label.x(), self.y + self.scrollbar4.value())


if __name__ == '__main__':
    app = QApplication(sys.argv)
    app.setWindowIcon(QIcon('icon/icon.jpeg'))
    main = FirstMainWin()
    main.show()
    sys.exit(app.exec_())

'''


附录:
茶底 / 奶 / 椰,冰糖浆,水果,冰块和水,果汁,小料,芝士
    1、喜茶
        芝芝桃桃,芝芝莓莓,芝芝莓莓桃,芝芝芒芒,芝士绿妍,功夫红豆双皮奶,多肉芒芒甘露,多肉杨梅,多肉葡萄,绿爆柠
        多肉黄皮,雪山思乡龙眼,满杯橙橙,满杯红柚,多肉荔枝,芋泥波波牛乳,超厚牛乳波波,豆豆波波茶,生打椰椰奶冻,雪山满陇金桂,酒酿桂花冻
'''

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值