ChatGPT解答:PYQT5 组件化实例,Python代码实现,给出100个代码实例

news2025/7/12 15:19:10

ChatGPT解答:

PYQT5 组件化实例,Python代码实现,给出100个代码实例

 

PYQT5 组件化实例,Python代码实现,给出100个代码实例

  1. 实现一个简单的窗口

import sys
from PyQt5.QtWidgets import QApplication, QWidget

app = QApplication(sys.argv)
window = QWidget()
window.show()
sys.exit(app.exec_())
  1. 实现一个带有标题的窗口

import sys
from PyQt5.QtWidgets import QApplication, QWidget

app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle('My Window')
window.show()
sys.exit(app.exec_())
  1. 实现一个带有按钮的窗口

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton

app = QApplication(sys.argv)
window = QWidget()
button = QPushButton('Click me!', window)
button.move(50, 50)
window.show()
sys.exit(app.exec_())
  1. 实现一个带有标签的窗口

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel

app = QApplication(sys.argv)
window = QWidget()
label = QLabel('Hello, world!', window)
label.move(50, 50)
window.show()
sys.exit(app.exec_())
  1. 实现一个带有文本框的窗口

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLineEdit

app = QApplication(sys.argv)
window = QWidget()
text_box = QLineEdit(window)
text_box.move(50, 50)
window.show()
sys.exit(app.exec_())
  1. 实现一个带有滑块的窗口

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QSlider

app = QApplication(sys.argv)
window = QWidget()
slider = QSlider(window)
slider.move(50, 50)
window.show()
sys.exit(app.exec_())
  1. 实现一个带有复选框的窗口

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QCheckBox

app = QApplication(sys.argv)
window = QWidget()
check_box = QCheckBox('Check me!', window)
check_box.move(50, 50)
window.show()
sys.exit(app.exec_())
  1. 实现一个带有单选按钮的窗口

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QRadioButton

app = QApplication(sys.argv)
window = QWidget()
radio_button = QRadioButton('Select me!', window)
radio_button.move(50, 50)
window.show()
sys.exit(app.exec_())
  1. 实现一个带有菜单栏的窗口

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QMenuBar, QMenu, QAction

app = QApplication(sys.argv)
window = QWidget()
menu_bar = QMenuBar(window)
file_menu = QMenu('File', menu_bar)
new_action = QAction('New', window)
file_menu.addAction(new_action)
menu_bar.addMenu(file_menu)
window.show()
sys.exit(app.exec_())
  1. 实现一个带有工具栏的窗口

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QToolBar, QAction

app = QApplication(sys.argv)
window = QWidget()
tool_bar = QToolBar(window)
new_action = QAction('New', window)
tool_bar.addAction(new_action)
window.addToolBar(tool_bar)
window.show()
sys.exit(app.exec_())
  1. 实现一个带有状态栏的窗口

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QStatusBar

app = QApplication(sys.argv)
window = QWidget()
status_bar = QStatusBar(window)
status_bar.showMessage('Ready')
window.setStatusBar(status_bar)
window.show()
sys.exit(app.exec_())
  1. 实现一个带有进度条的窗口

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QProgressBar

app = QApplication(sys.argv)
window = QWidget()
progress_bar = QProgressBar(window)
progress_bar.move(50, 50)
progress_bar.setValue(50)
window.show()
sys.exit(app.exec_())
  1. 实现一个带有列表的窗口

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QListWidget, QListWidgetItem

app = QApplication(sys.argv)
window = QWidget()
list_widget = QListWidget(window)
item1 = QListWidgetItem('Item 1')
item2 = QListWidgetItem('Item 2')
list_widget.addItem(item1)
list_widget.addItem(item2)
list_widget.move(50, 50)
window.show()
sys.exit(app.exec_())
  1. 实现一个带有树形控件的窗口

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QTreeWidget, QTreeWidgetItem

app = QApplication(sys.argv)
window = QWidget()
tree_widget = QTreeWidget(window)
root_item = QTreeWidgetItem(['Root'])
child_item1 = QTreeWidgetItem(['Child 1'])
child_item2 = QTreeWidgetItem(['Child 2'])
root_item.addChild(child_item1)
root_item.addChild(child_item2)
tree_widget.addTopLevelItem(root_item)
tree_widget.move(50, 50)
window.show()
sys.exit(app.exec_())
  1. 实现一个带有表格的窗口

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QTableWidget, QTableWidgetItem

app = QApplication(sys.argv)
window = QWidget()
table_widget = QTableWidget(window)
table_widget.setRowCount(2)
table_widget.setColumnCount(2)
item1 = QTableWidgetItem('1')
item2 = QTableWidgetItem('2')
item3 = QTableWidgetItem('3')
item4 = QTableWidgetItem('4')
table_widget.setItem(0, 0, item1)
table_widget.setItem(0, 1, item2)
table_widget.setItem(1, 0, item3)
table_widget.setItem(1, 1, item4)
table_widget.move(50, 50)
window.show()
sys.exit(app.exec_())
  1. 实现一个带有日期选择器的窗口

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QDateEdit

app = QApplication(sys.argv)
window = QWidget()
date_edit = QDateEdit(window)
date_edit.setDate(QDate.currentDate())
date_edit.move(50, 50)
window.show()
sys.exit(app.exec_())
  1. 实现一个带有时间选择器的窗口

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QTimeEdit

app = QApplication(sys.argv)
window = QWidget()
time_edit = QTimeEdit(window)
time_edit.setTime(QTime.currentTime())
time_edit.move(50, 50)
window.show()
sys.exit(app.exec_())
  1. 实现一个带有日期时间选择器的窗口

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QDateTimeEdit

app = QApplication(sys.argv)
window = QWidget()
date_time_edit = QDateTimeEdit(window)
date_time_edit.setDateTime(QDateTime.currentDateTime())
date_time_edit.move(50, 50)
window.show()
sys.exit(app.exec_())
  1. 实现一个带有颜色选择器的窗口

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QColorDialog

app = QApplication(sys.argv)
window = QWidget()
color_dialog = QColorDialog(window)
color_dialog.move(50, 50)
color_dialog.show()
sys.exit(app.exec_())
  1. 实现一个带有字体选择器的窗口

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QFontDialog

app = QApplication(sys.argv)
window = QWidget()
font_dialog = QFontDialog(window)
font_dialog.move(50, 50)
font_dialog.show()
sys.exit(app.exec_())
  1. 实现一个带有文件选择器的窗口

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QFileDialog

app = QApplication(sys.argv)
window = QWidget()
file_dialog = QFileDialog(window)
file_dialog.move(50, 50)
file_dialog.show()
sys.exit(app.exec_())
  1. 实现一个带有打印对话框的窗口

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPrintDialog, QPrinter

app = QApplication(sys.argv)
window = QWidget()
printer = QPrinter()
print_dialog = QPrintDialog(printer, window)
print_dialog.move(50, 50)
print_dialog.show()
sys.exit(app.exec_())
  1. 实现一个带有消息框的窗口

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QMessageBox

app = QApplication(sys.argv)
window = QWidget()
message_box = QMessageBox(window)
message_box.setText('Hello, world!')
message_box.move(50, 50)
message_box.show()
sys.exit(app.exec_())
  1. 实现一个带有输入对话框的窗口

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QInputDialog

app = QApplication(sys.argv)
window = QWidget()
input_dialog = QInputDialog(window)
input_dialog.move(50, 50)
input_dialog.show()
sys.exit(app.exec_())
  1. 实现一个带有进度对话框的窗口

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QProgressDialog

app = QApplication(sys.argv)
window = QWidget()
progress_dialog = QProgressDialog(window)
progress_dialog.move(50, 50)
progress_dialog.show()
sys.exit(app.exec_())
  1. 实现一个带有颜色选择器的按钮

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QColorDialog

app = QApplication(sys.argv)
window = QWidget()
button = QPushButton('Select color', window)
color_dialog = QColorDialog(window)
color_dialog.setCurrentColor(button.palette().button().color())
def on_button_clicked():
    color = color_dialog.getColor()
    if color.isValid():
        button.setStyleSheet('background-color: %s;' % color.name())
button.clicked.connect(on_button_clicked)
button.move(50, 50)
window.show()
sys.exit(app.exec_())
  1. 实现一个带有字体选择器的按钮

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QFontDialog

app = QApplication(sys.argv)
window = QWidget()
button = QPushButton('Select font', window)
font_dialog = QFontDialog(window)
def on_button_clicked():
    font, ok = font_dialog.getFont()
    if ok:
        button.setFont(font)
button.clicked.connect(on_button_clicked)
button.move(50, 50)
window.show()
sys.exit(app.exec_())
  1. 实现一个带有文件选择器的按钮

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QFileDialog

app = QApplication(sys.argv)
window = QWidget()
button = QPushButton('Select file', window)
file_dialog = QFileDialog(window)
def on_button_clicked():
    file_name, _ = file_dialog.getOpenFileName()
    if file_name:
        button.setText(file_name)
button.clicked.connect(on_button_clicked)
button.move(50, 50)
window.show()
sys.exit(app.exec_())
  1. 实现一个带有打印对话框的按钮

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QPrintDialog, QPrinter

app = QApplication(sys.argv)
window = QWidget()
button = QPushButton('Print', window)
printer = QPrinter()
print_dialog = QPrintDialog(printer, window)
def on_button_clicked():
    if print_dialog.exec_() == QDialog.Accepted:
        # print the document
        pass
button.clicked.connect(on_button_clicked)
button.move(50, 50)
window.show()
sys.exit(app.exec_())
  1. 实现一个带有消息框的按钮

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QMessageBox

app = QApplication(sys.argv)
window = QWidget()
button = QPushButton('Show message', window)
message_box = QMessageBox(window)
message_box.setText('Hello, world!')
def on_button_clicked():
    message_box.exec_()
button.clicked.connect(on_button_clicked)
button.move(50, 50)
window.show()
sys.exit(app.exec_())
  1. 实现一个带有输入对话框的按钮

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QInputDialog

app = QApplication(sys.argv)
window = QWidget()
button = QPushButton('Get text', window)
input_dialog = QInputDialog(window)
input_dialog.setInputMode(QInputDialog.TextInput)
def on_button_clicked():
    text, ok = input_dialog.getText(window, 'Input Dialog', 'Enter your name:')
    if ok:
        button.setText(text)
button.clicked.connect(on_button_clicked)
button.move(50, 50)
window.show()
sys.exit(app.exec_())
  1. 实现一个带有进度对话框的按钮

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QProgressDialog

app = QApplication(sys.argv)
window = QWidget()
button = QPushButton('Show progress', window)
progress_dialog = QProgressDialog(window)
progress_dialog.setRange(0, 100)
def on_button_clicked():
    progress_dialog.setValue(0)
    for i in range(100):
        progress_dialog.setValue(i)
button.clicked.connect(on_button_clicked)
button.move(50, 50)
window.show()
sys.exit(app.exec_())
  1. 实现一个带有标签的按钮

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QLabel

app = QApplication(sys.argv)
window = QWidget()
button = QPushButton('Click me!', window)
label = QLabel('Button not clicked', window)
def on_button_clicked():
    label.setText('Button clicked')
button.clicked.connect(on_button_clicked)
button.move(50, 50)
label.move(50, 100)
window.show()
sys.exit(app.exec_())
  1. 实现一个带有滑块的标签

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QSlider

app = QApplication(sys.argv)
window = QWidget()
label = QLabel('50', window)
slider = QSlider(window)
slider.setOrientation(Qt.Horizontal)
slider.setRange(0, 100)
slider.setValue(50)
def on_slider_value_changed(value):
    label.setText(str(value))
slider.valueChanged.connect(on_slider_value_changed)
label.move(50, 50)
slider.move(50, 100)
window.show()
sys.exit(app.exec_())
  1. 实现一个带有复选框的标签

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QCheckBox

app = QApplication(sys.argv)
window = QWidget()
label = QLabel('Check me!', window)
check_box = QCheckBox(window)
def on_check_box_state_changed(state):
    if state == Qt.Checked:
        label.setText('Checked')
    else:
        label.setText('Unchecked')
check_box.stateChanged.connect(on_check_box_state_changed)
label.move(50, 50)
check_box.move(50, 100)
window.show()
sys.exit(app.exec_())
  1. 实现一个带有单选按钮的标签

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QRadioButton

app = QApplication(sys.argv)
window = QWidget()
label = QLabel('Select me!', window)
radio_button1 = QRadioButton('Option 1', window)
radio_button2 = QRadioButton('Option 2', window)
def on_radio_button_clicked():
    if radio_button1.isChecked():
        label.setText('Option 1 selected')
    elif radio_button2.isChecked():
        label.setText('Option 2 selected')
radio_button1.clicked.connect(on_radio_button_clicked)
radio_button2.clicked.connect(on_radio_button_clicked)
label.move(50, 50)
radio_button1.move(50, 100)
radio_button2.move(50, 150)
window.show()
sys.exit(app.exec_())
  1. 实现一个带有列表的标签

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QListWidget, QListWidgetItem

app = QApplication(sys.argv)
window = QWidget()
label = QLabel('Select an item:', window)
list_widget = QListWidget(window)
item1 = QListWidgetItem('Item 1')
item2 = QListWidgetItem('Item 2')
list_widget.addItem(item1)
list_widget.addItem(item2)
def on_list_widget_item_clicked(item):
    label.setText('Item selected: %s' % item.text())
list_widget.itemClicked.connect(on_list_widget_item_clicked)
label.move(50, 50)
list_widget.move(50, 100)
window.show()
sys.exit(app.exec_())
  1. 实现一个带有树形控件的标签

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QTreeWidget, QTreeWidgetItem

app = QApplication(sys.argv)
window = QWidget()
label = QLabel('Select an item:', window)
tree_widget = QTreeWidget(window)
root_item = QTreeWidgetItem(['Root'])
child_item1 = QTreeWidgetItem(['Child 1'])
child_item2 = QTreeWidgetItem(['Child 2'])
root_item.addChild(child_item1)
root_item.addChild(child_item2)
tree_widget.addTopLevelItem(root_item)
def on_tree_widget_item_clicked(item):
    label.setText('Item selected: %s' % item.text(0))
tree_widget.itemClicked.connect(on_tree_widget_item_clicked)
label.move(50, 50)
tree_widget.move(50, 100)
window.show()
sys.exit(app.exec_())
  1. 实现一个带有表格的标签

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QTableWidget, QTableWidgetItem

app = QApplication(sys.argv)
window = QWidget()
label = QLabel('Select a cell:', window)
table_widget = QTableWidget(window)
table_widget.setRowCount(2)
table_widget.setColumnCount(2)
item1 = QTableWidgetItem('1')
item2 = QTableWidgetItem('2')
item3 = QTableWidgetItem('3')
item4 = QTableWidgetItem('4')
table_widget.setItem(0, 0, item1)
table_widget.setItem(0, 1, item2)
table_widget.setItem(1, 0, item3)
table_widget.setItem(1, 1, item4)
def on_table_widget_item_clicked(item):
    row = item.row()
    column = item.column()
    label.setText('Cell selected: (%d, %d)' % (row, column))
table_widget.itemClicked.connect(on_table_widget_item_clicked)
label.move(50, 50)
table_widget.move(50, 100)
window.show()
sys.exit(app.exec_())

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

我90后,零基础成功转行python工程师,从月薪5K到现在月入2W+改变真的难吗?

我是25岁转行学python的。说实在,转行就是奔着挣钱去的。希望我的经历可以给想转行的朋友带来一点启发和借鉴。 先简单介绍下个人背景,三流大学毕业,物流专业,学习能力一般,没啥特别技能,反正就很普通的一…

CSS3新特性-变量

2017年三月,微软宣布 Edge 浏览器将支持 CSS 变量。 这个重要的 CSS 新功能,所有主要浏览器已经都支持了。本文全面介绍如何使用它,你会发现原生 CSS 从此变得异常强大。 一、变量的声明 声明变量的时候,变量名前面要加两根连词…

python入门应该怎么学习

国外Python的使用率非常高,但在国内Python是近几年才火起来,Python正处于高速上升期市场对于Python开发人才的需求量急剧增加,学习Python的前景比较好。 Python应用领域广泛,意味着选择Python的同学在学成之后可选择的就业领域有…

虚函数与多态性

5.1多态性概述: 按实施的机制,多态可以分为两类: 虚函数的定义: (前面思维是虚基类,别搞混了) 运行时多态的条件: 运行时的多态: 基类中有show(),派生类中也有show&…

叠氮化物标记糖92659-90-0,2-[(Azidoacetyl)amino]-2-deoxy-D-glucose广泛用于体内代谢标记

基础产品数据:CAS号:92659-90-0中文名:2-[(叠氮基乙酰基)氨基]-2-脱氧葡萄糖英文名:2-[(Azidoacetyl)amino]-2-deoxy-D-glucose性 状:白色粉末温馨提示:所有的试剂仅用于科研实验。结构式(Struc…

ChatGPT解答:纯前端文档预览,Vue实现,无需后端,支持Word、Excel、PPT、pdf、文本、图片,附接入demo和文档

ChatGPT解答:纯前端文档预览,Vue实现,无需后端,支持Word、Excel、PPT、pdf、文本、图片,附接入demo和文档 ChatGPTDemo Based on OpenAI API (gpt-3.5-turbo). 纯前端文档预览,Vue实现,无需后…

【软件测试】性能测试面试题都问什么?面试官想要什么?回答惊险避坑......

目录:导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜)前言 1、你认为不同角色关…

A Bio-Inspired Multi-Exposure Fusion Frameworkfor Low-light Image Enhancement

Abstract弱光图像的能见度较低,不利于人类观察和计算机视觉算法。尽管许多图像增强技术已经被提出来解决这个问题,现有的方法不可避免地引入对比度增强不足和过度。受人类视觉系统的启发,我们设计了一个用于微光图像增强的多曝光融合框架。在…

机器学习错题集(1)

生成模型与判别模型的区别: 在机器学习中,对于有监督学习可以将其分为两类模型:判别式模型和生成式模型。简单地说,判别式模型是针对条件分布建模,而生成式模型则针对联合分布进行建模。已知输入变量x: 生成…

深度学习之卷积神经网络学习笔记二

1. 引言在学习笔记一中,我们介绍了几种常用的分类模型框架,如VGGNet,GoogleNet,和ResNet,并且介绍了几种简单的分割模型。如FCN,UNet,SegNet和Deeplab。从深度学习兴起到现在,模型一…

UML1——用图说话

目录 一、前言 二、使用工具 三、UML面对对象 四、UML图标 4.1 事物 4.2 关系 4.3 关系线数字 4.4 关系图示例 五、UML开发思路 一、前言 不管是系统项目工程师,还是开发人员,熟悉使用UML都必不可少。UML 是一种为面向对象开发系统的产品进行说明…

2月刚上岸字节跳动测试岗面经

这时候发应该还不算太晚,金三银四找工作的小伙伴需要的可以看看。 一、测试工程师的工作是什么? 测试工程师简单点说就是找bug,然后反馈给开发人员,不要小看这个工作。 首先很明显的bug开发人员有时候自己就能找到,测…

一文2000字从0到1学习接口自动化测试必备知识(建议收藏)

在所有的测试中,接口测试是必不可少的一项。有效且覆盖完整的接口测试,不仅能保障新功能的开发质量,还能让开发在修改功能逻辑的时候有回归的能力,同时也是能优雅地进行重构的前提。编写接口测试要遵守哪些原则?测试代…

Python读取文字并点击对应的图片

本来想写了一大堆今天遇到的需求,想想还是删了,我直接说出本文的功能,读取A列的Excel(全是名字),然后点击名字所对应的图片: 名字所对应的图片 直接看视频,是不是你想要的结果! 我循环了三次&a…

【JAR包打包为EXE】javafx/java项目(适用jdk1.8)通过Gradle插件打包为exe,包含jre,客户机无需安装JDK(含代码)

前言: 通常在采用javafx或tornadofx等框架编写的桌面软件后,若要分发给客户机进行使用,就需要先在目标客户机安装合适版本的JDK,对于客户机来说并不需要关注这一步骤,这也增加了多台客户机分发及使用的成本&#xff0…

宾语从句it做形式主语的句子

It代替从句作形式主语的常见句型 一、it 代替连词 that 引导的从句作形式主语。 1、it be 过去分词 that 从句: It’s said that Tom has come back from abroad . It was reported that dozens of children died in the accident . 可用于该句型的过去分词还有&#xf…

Qt学习2-Qt Creator新建项目小tips(哔站视频学习记录)

放送两个小tips: 1、MinGW和MSVC的区别 QT学习笔记(二):QT MinGW 和 MSVC 编译方式_Leon_Chan0的博客-CSDN博客 2、如何安装QT对应版本的MSVC (1)问题描述:Qt5.12.8支持MSVC2015和MSVC2017,但是系统安装的是Visual…

大数据技术——函数式编程基础

函数定义与使用定义函数最通用的方法是作为某个类或者对象的成员,这种函数被称为方法。其定义的基本语法为:def 方法名(参数列表):结果类型方法体}字面量包括整数字面量、浮点数字面量、布尔型字面量、字符字面量、字符串字面量、符号字面量、函数字面量…

hdfs的读写数据流程

读: (1)客户端通过DistributedFileSystem向NameNode请求下载文件,NameNode通过查询元数据,找到文件块所在的DataNode地址。 (2)挑选一台DataNode(就近原则,然后随机&…

学习机器学习应该看哪些书籍?

机器学习是一种人工智能技术,它通过利用计算机算法和数学模型,使计算机系统能够自动从数据中学习,从而不断改进其性能。它是一种数据驱动的方法,可以让计算机从经验中学习,而无需明确地编程。具体来说,机器…