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、喜茶 芝芝桃桃,芝芝莓莓,芝芝莓莓桃,芝芝芒芒,芝士绿妍,功夫红豆双皮奶,多肉芒芒甘露,多肉杨梅,多肉葡萄,绿爆柠 多肉黄皮,雪山思乡龙眼,满杯橙橙,满杯红柚,多肉荔枝,芋泥波波牛乳,超厚牛乳波波,豆豆波波茶,生打椰椰奶冻,雪山满陇金桂,酒酿桂花冻 '''
【无标题】0916
最新推荐文章于 2024-06-02 09:57:25 发布
1万+

被折叠的 条评论
为什么被折叠?



