使用PyQt5设计订单查询界面—了解界面布局2

想要实现的界面效果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

增加Tab Widge的页签

在MainWindow窗口中选中水平布局,将一个Label控件和一个默认自带两个页签的Tab Widget控件放到水平布局中,Tab Widget控件右键选择“插入页”再选择“在当前页之后”增加页签。

在这里插入图片描述

为每一个Tab页签界面都选择“栅格布局”

要想实现控件大小随着窗口大小变化,在控件布局都ok的情况下,为每一个Tab页签界面都选择“栅格布局”可以实现控件大小随着窗口大小变化功能。

在这里插入图片描述

dateEdit控件勾选CalendarPopup设置选择日历查看

如果不选择CalendarPopup属性为True,则日期控件dateEdit必须手动输入对应日期,选择CalendarPopup属性为True后,出现日历样式的界面可以直接翻页点击对应日期,更加直观方便。

Qt dateEdit 选择日期控件

关键代码:

# 此处代码作用为下拉显示日历
  self.dateTimeEdit.setCalendarPopup(True)

在这里插入图片描述

在这里插入图片描述

在PyQt5中使dateEdit不显示时间只显示日期

在PyQt5中,如果QDateEdit只显示日期而不显示时间,你可以通过设置其显示的日期格式来实现。你可以使用QDateEdit.setDisplayFormat()方法来指定显示的格式,如果你想只显示日期,可以设置格式为"yyyy-MM-dd"。

关键代码:

 # 设置日期格式为 "yyyy-MM-dd",只显示日期
   date_edit.setDisplayFormat("yyyy-MM-dd")

下面是一个简单的例子,演示如何设置QDateEdit只显示日期:

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QDateEdit, QVBoxLayout
from PyQt5.QtCore import QDate
 
class DateEditExample(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()
 
    def initUI(self):
        # 创建一个QDateEdit对象
        date_edit = QDateEdit(QDate.currentDate(), self)
        
        # 设置日期格式为 "yyyy-MM-dd",只显示日期
        date_edit.setDisplayFormat("yyyy-MM-dd")
        
        # 创建一个垂直布局
        v_layout = QVBoxLayout()
        v_layout.addWidget(date_edit)
        
        # 设置窗口的布局
        self.setLayout(v_layout)
 
        # 设置窗口的标题
        self.setWindowTitle('QDateEdit Example')
 
        # 设置窗口的大小
        self.setGeometry(300, 300, 250, 150)
        self.show()
 
if __name__ == '__main__':
    app = QApplication(sys.argv)
    example = DateEditExample()
    sys.exit(app.exec_())

QTableWidget 表格中设置单元格的颜色

PyQT5 (四十三) 在 QTableWidget 表格中设置单元格的字体和颜色 的案例

百度搜索“在PyQt5中tableWidget设置cell颜色”,AI自动生成的解决方案如下:
在PyQt5中,可以使用QTableWidgetItem和QTableWidget的item方法来设置单元格(cell)的颜色。以下是一个简单的例子,展示如何为QTableWidget的特定单元格设置背景和文本颜色:

from PyQt5.QtWidgets import QApplication, QTableWidget, QTableWidgetItem
from PyQt5.QtGui import QBrush, QColor, QFont
import sys
 
def set_cell_color(table_widget, row, column, background_color, text_color):
    item = QTableWidgetItem('Item')
    item.setBackground(QBrush(QColor(background_color)))
    item.setForeground(QBrush(QColor(text_color)))
    table_widget.setItem(row, column, item)
 
def main():
    app = QApplication(sys.argv)
    table_widget = QTableWidget(10, 5)  # 创建一个10行5列的表格
 
    # 设置单元格颜色
    set_cell_color(table_widget, 0, 0, 'red', 'white')
 
    table_widget.show()
    sys.exit(app.exec_())
 
if __name__ == '__main__':
    main()

在这个例子中,set_cell_color函数接受QTableWidget、行索引、列索引以及背景和文本颜色作为参数。它创建了一个QTableWidgetItem,并设置了背景和文本颜色,然后将这个项设置到指定的单元格上。

最终界面程序使用的代码如下:

    def set_cell_color(self, table_widget, row, column, text_color):
        item = table_widget.item(row, column)
        # item.setBackground(QBrush(QColor(background_color)))
        item.setForeground(QBrush(QColor(text_color)))
        table_widget.setItem(row, column, item)

在PyQt5中得到tableWidget有多少行的函数

百度搜索“在PyQt5中得到tableWidget有多少行的函数”,AI自动生成的解决方案如下:
在PyQt5中,要获取QTableWidget的行数,可以使用rowCount()方法。以下是一个简单的示例代码,展示了如何获取QTableWidget的行数:

import sys
from PyQt5.QtWidgets import QApplication, QTableWidget, QWidget
 
def get_row_count(table_widget):
    return table_widget.rowCount()
 
def main():
    app = QApplication(sys.argv)
    table_widget = QTableWidget()
 
    # 添加一些行
    for i in range(5):
        table_widget.insertRow(i)
 
    # 获取行数
    row_count = get_row_count(table_widget)
    print(f"TableWidget has {row_count} rows.")
 
    # 创建一个窗口并显示表格
    window = QWidget()
    window.setLayout(table_widget.verticalLayout())
    window.show()
 
    sys.exit(app.exec_())
 
if __name__ == '__main__':
    main()

在这个例子中,我们首先创建了一个QTableWidget对象,然后通过循环插入了5行。之后,我们调用了get_row_count函数来获取行数,并打印到控制台。最后,我们创建了一个窗口来显示这个表格,并启动了应用程序的事件循环。

在PyQt5中删除tableWidget某行的函数

百度搜索“在PyQt5中删除tableWidget某行的函数”,AI自动生成解决方案如下:
在PyQt5中,要删除QTableWidget某一行,你可以使用removeRow()方法。以下是一个简单的例子,演示如何删除选中行:

from PyQt5.QtWidgets import QApplication, QTableWidget, QAbstractItemView
 
def delete_row():
    # 假设tableWidget是你的QTableWidget实例
    rows = tableWidget.selectedRows()
    for row in reversed(rows):  # 从下往上删除以避免影响后续行的索引
        tableWidget.removeRow(row.row())
 
# 初始化QApplication
app = QApplication([])
 
# 创建QTableWidget实例
tableWidget = QTableWidget(10, 5)  # 创建一个有10行5列的表格
tableWidget.setSelectionBehavior(QAbstractItemView.SelectRows)  # 设置选择行为
 
# 填充表格数据
for row in range(tableWidget.rowCount()):
    for column in range(tableWidget.columnCount()):
        tableWidget.setItem(row, column, QTableWidgetItem(f"Cell {row}, {column}"))
 
# 设置删除行的信号与槽函数关联
# 这里假设你有一个按钮或者其他触发删除行的机制,当触发时调用delete_row函数
# ...
 
# 运行应用
app.exec_()

在这个例子中,delete_row函数会删除当前选中的所有行。确保在实际使用时将此函数与触发删除行的事件关联起来。

在PyQt5中,QTableWidget类提供了removeRow()方法,该方法用于从表格中删除指定的行。但是,实际上并没有直接的removeRow()方法可以使用,可能你是想使用removeRow()方法来描述你的意图,但是这是不正确的。

在PyQt5中,删除QTableWidget中的行,你需要使用removeRow()方法,这是QTableWidgetItem的方法,而不是QTableWidget的方法。

以下是一些可能的解决方案:

解决方案1:使用takeRow()方法

takeRow()方法用于删除并返回表格中的指定行。

def deleteRow(self, row):
    self.tableWidget.takeRow(row)

解决方案2:使用removeRow()方法和clear()方法

removeRow()方法用于删除表格中的指定行,clear()方法用于清除表格中的所有内容。

def deleteRow(self, row):
    self.tableWidget.removeRow(row)
    self.tableWidget.clear()

解决方案3:使用setRowCount()方法

setRowCount()方法用于设置表格的行数。如果要删除所有行,可以将行数设置为0。

def deleteRow(self, row):
    self.tableWidget.setRowCount(0)

注意:在使用这些方法时,你需要确保你的row参数是有效的,也就是说它不应该超出表格的行数范围。

最终界面程序使用的代码如下:

row_nums = self.my_tableWidget.rowCount()
if row_nums > 0:
    self.my_tableWidget.setRowCount(0)

PyQt5中tableWidget根据单元格数据自动调整单元格大小

PyQT5 (四十七) 在 QTableWidget 表格中设置单元格大小 的案例
PyQt5中QTableWidget设置列宽大小的几种方式

关键代码:

self.tableWidget.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
self.tableWidget.horizontalHeader().setSectionResizeMode(0, QHeaderView.ResizeToContents) # 调整第一列的列宽大小为自动适应

上面代码模式下,表格的列宽不能手动拉动,列宽固定了。

在PyQt5中tableWidget插入某行的函数

百度搜索“在PyQt5中tableWidget插入某行的函数”,AI自动生成解决方案如下:

在PyQt5中,可以使用QTableWidget的insertRow()方法来插入新行。这个方法可以在指定的位置插入一行,并且可以选择是在上方还是在下方插入。

以下是一个简单的例子,展示如何在QTableWidget的末尾插入一行,并在每个单元格中插入一些文本:

import sys
from PyQt5.QtWidgets import QApplication, QTableWidget, QTableWidgetItem, QWidget, QVBoxLayout
 
class TableWidgetExample(QWidget):
    def __init__(self):
        super().__init__()
        self.tableWidget = QTableWidget(10, 3)  # 创建一个10行3列的表格
        self.tableWidget.setHorizontalHeaderLabels(['Column 1', 'Column 2', 'Column 3'])
        self.initUI()
 
    def initUI(self):
        # 创建一个布局并将表格添加到布局中
        layout = QVBoxLayout()
        layout.addWidget(self.tableWidget)
        self.setLayout(layout)
 
        # 插入新行
        self.insertRow()
 
        # 设置窗口的属性
        self.setGeometry(100, 100, 500, 300)
        self.setWindowTitle('QTableWidget Example')
        self.show()
 
    def insertRow(self):
        # 获取表格的当前行数
        rowCount = self.tableWidget.rowCount()
        # 在末尾插入一行
        self.tableWidget.insertRow(rowCount)
        # 在新行的每个单元格中插入文本
        for column in range(self.tableWidget.columnCount()):
            self.tableWidget.setItem(rowCount, column, QTableWidgetItem('New Item'))
 
 
if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = TableWidgetExample()
    sys.exit(app.exec_())

在这个例子中,TableWidgetExample类初始化了一个QTableWidget,并设置了3列的表头。initUI方法创建了一个布局并设置了窗口的基本属性。insertRow方法则插入了一行,并在每个单元格中填充了文本。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/624358.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【学习笔记】C++每日一记[20240513]

简述静态全局变量的概念 在全局变量前加上static关键字,就定义了一个静态全局变量。通常情况下,静态全局变量的声明和定义放在源文件中,并且不能使用extern关键字将静态全局变量导出,因此静态全局变量的**作用于仅限于定义静态全…

【driver6】debugfs,性能优化,

文章目录 1.内核调试手段:debugfs.h中api建立目录/sys/kernel/debug2.性能优化:裸磁盘无法使用,一般都刷文件系统。驱动加上要考虑磁盘io,内存占用,cpu使用情况3.Valgrind内存泄漏排查案例:4.cpu瓶颈&#…

ArrayList的深拷贝与浅拷贝

1、深拷贝 通过以下代码进行理解 import java.util.ArrayList; import java.util.List;public class Demo {public static void main(String[] args) {List<Integer> c new ArrayList<>();c.add(1);c.add(2);c.add(3);List<Integer> c1 new ArrayList<…

部署Discuz论坛项目

DIscuz 是由 PHP 语言开发的一款开源社交论坛项目。运行在典型的LNMP/LAMP 环境中。 安装MySQL数据库5.7 主机名IP地址操作系统硬件配置discuz-db192.168.226.128CentOS 7-mini-20092 Core/4G Memory 修改主机名用来自己识别 hostnamectl set-hostname discuz-db #重连远程…

海外仓管理优化策略:花更少的钱,收获更大的收益

海外仓成本确实越来越高了。 仓储成本和人力成本几乎占据了海外仓经营成本的一大部分&#xff0c;这严重的影响了海外仓企业的盈利能力。如果你正打算开设海外仓业务或者已经在经营海外仓业务&#xff0c;那这个问题一定不能忽视&#xff0c;毕竟成本越高&#xff0c;就意味着你…

中北机械有限公司将参加2024长三角快递物流供应链与技术装备展览会

参展企业介绍 浙江中北机械有限公司总部位于浙江杭州&#xff0c;生产基地位于浙江桐乡。是一家有着十几年金属制品及仓储物流设施设备生产经验&#xff0c;专业设计、生产、制造各类物流钢制托盘&#xff0c;物流手推车&#xff0c;仓储货架及门店展架&#xff0c;宣传展架等物…

力扣HOT100 - 198. 打家劫舍

解题思路&#xff1a; 动态规划 class Solution {public int rob(int[] nums) {int len nums.length;if (nums null || len 0) return 0;if (len 1) return nums[0];int[] dp new int[len];dp[0] nums[0];dp[1] Math.max(nums[0], nums[1]);for (int i 2; i < len;…

zookeeper集群部署以及zookeeper原理

文章目录 简介工作原理特性官网地址准备节点准备环境准备JAVA主机映射 部署 简介 ZooKeeper是一个分布式的&#xff0c;开放源码的分布式应用程序协调服务&#xff0c;是Google的Chubby一个开源的实现&#xff0c;是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服…

宝塔纯净版 7.6.0版本无需手机登录 [稳定版本/推荐]

下载地址&#xff1a;宝塔纯净版 7.6.0版本无需手机登录.zip 宝塔纯净版介绍 无需手机登录&#xff1a;不再有手机登录提示&#xff0c;或按照提示输入任意手机号密码即可模拟绑定&#xff1b; 安全&#xff1a;剥离了所有与宝塔官方的通信、上报、下发&#xff1b;并且不与…

Vue Excel 文件流导出乱码快速解决方案

今日在开发一个导出功能&#xff0c;原本一个非常简单的功能&#xff0c;却没想里面藏了陷阱&#xff01; 背景 前端导出的文件流乱码&#xff0c;此时确定非后端问题&#xff08;可以在postman导出是否正常来判断&#xff09;。 前端导出&#xff1a; 后端正常数据&#xf…

黑马基于Web-socket的java聊天室基本解析

要是用Web-socket协议&#xff0c;我们要前端upgrade升级成web-socket协议 首先我们要引入springboot的websocket起步依赖&#xff0c;这样子方便使用&#xff0c;自己指定版本注意 <dependency><groupId>org.springframework.boot</groupId><artifactId&…

2种方法教你快速完成图片格式转换!

在数字世界中&#xff0c;图片是我们传递信息和表达创意的重要媒介。然而&#xff0c;不同的应用场景需要不同格式的图片。例如&#xff0c;网页设计可能需要使用PNG格式&#xff0c;而打印则需要使用JPG或PDF格式。这就需要我们经常进行图片格式转换。 下文小编将分享2种方法…

Ubuntu搭建VsCode C++ 开发环境

Ubuntu搭建VsCode C 开发环境 安装VS Code 使用命令来安装VS Code&#xff1a;他会下载vscode的最新版本。 sudo snap install --classic code如果不使用命令 的方式 在官网下载vscode安装包&#xff08; 后缀为 .deb的包 &#xff09;之后&#xff08;可以选择版本 &#x…

【JavaEE精炼宝库】多线程1(认识线程 | 创建线程 | Thread 类)

目录 一、认识线程 1.1 线程的概念&#xff1a; 1.2 为什么需要线程&#xff1a; 1.3 面试题.谈谈进程和线程的区别&#xff1a; 1.4 Java的线程和操作系统线程的关系&#xff1a; 二、创建线程 2.1 创建线程的5种写法&#xff1a; 2.1.1 写法1.继承 Thread 类&#xf…

codeforces round944(div4)A~F题解

文章目录 [A. My First Sorting Problem](https://codeforces.com/contest/1971/problem/A)[B. Different String](https://codeforces.com/contest/1971/problem/B)[C. Clock and Strings](https://codeforces.com/contest/1971/problem/C)[D. Binary Cut](https://codeforces…

5.10.10 用于图像识别的深度残差学习

1. 介绍 深度卷积神经网络为图像分类带来了一系列突破。深度网络自然地以端到端的多层方式集成低/中/高级特征和分类器&#xff0c;并且特征的“级别”可以通过堆叠层的数量&#xff08;深度&#xff09;来丰富。 学习更好的网络是否像堆叠更多层一样容易&#xff1f; 这个问…

网络工程师----第二十七天

计算机基 第四章&#xff1a;网络层 网络层提供服务的特点&#xff1a;网络层向上只提供简单的、无连接的、尽最大努力交付的数据报服务&#xff0c;不保证可靠通信。 网际协议IP&#xff1a; *地址解析协议ARP(Address Resolution Protocol) *网际控制报文协议ICMP(Inter…

分享一个非常好用的安装包下载网站

当我们需要下载linux下的某些包,以便在自己的环境下进行编译自己的安装包的时候,可能需要用到一些各种版本的依赖包,从网上 百度会很麻烦。 这里分享一个很好用的安装包下载网站,记得点赞收藏 网站: Red Hat Enterprise Linux Repositories - pkgs.org 找到对应系统,然…

【Java的抽象类和接口】

1. 抽象类 1.1 抽象类概念 在面向对象的概念中&#xff0c;所有的对象都是通过类来描绘的&#xff0c;但是反过来&#xff0c;并不是所有的类都是用来描绘对象的&#xff0c;如果 一个类中没有包含足够的信息来描绘一个具体的对象&#xff0c;这样的类就是抽象类。 以上代码中…

4.Jmeter阶梯加压Stepping Thread Group

1. 先去Jmeter下载地址下载PluginsManager&#xff0c;放置在Jmeter的lib/ext 目录下 &#xff0c;重启Jmeter 2. 在插件管理器查找并安装jpgc - Standard Set,重启Jmeter 3.右键测试计划->添加->Threads(Users)->jpgc - Stepping Thread Group 然后设置阶梯加压参数…