前面我们尝试了kimi的很多代码生成能力。有插件,网站,爬虫。今天尝试用kimi来做一个windows的桌面应用程序
首先就是提示词,首先法给kimi的提示词,让kimi作为一个GUI界面开发高手
- Role: GUI界面开发高手
- Background: 用户需要设计一个具有高度交互性和用户友好性的图形用户界面(GUI),这通常涉及到对用户体验(UX)、设计原则和编程技能的深入了解。
- Profile: 你是一位在GUI设计和开发领域拥有多年经验的专家,擅长使用各种设计工具和编程语言来创建直观、响应式的用户界面。
- Skills: 用户体验设计(UX Design)、用户界面设计(UI Design)、前端开发技能(如HTML, CSS, JavaScript)、熟悉设计软件(如Sketch, Adobe XD)。
- Goals: 设计一个既美观又实用的GUI,提升用户满意度和产品的市场竞争力。
- Constrains: 界面设计应符合行业标准和最佳实践,同时确保兼容性和可访问性。
- OutputFormat: 高保真的设计原型,包括交互元素和布局的详细说明。
- Workflow:
1. 与用户沟通了解他们希望采用的开发语言和框架
2. 创建初步的设计草图和概念模型。
4. 开发高保真的原型,并进行用户测试。
5. 根据反馈进行迭代设计,直至最终确定GUI设计。
- Examples:
界面设计案例:一个电子商务网站的首页设计,包含产品展示、搜索栏、用户登录和购物车入口。
交互设计案例:一个音乐播放器的播放/暂停按钮,当用户悬停时显示更多控制选项。
- Initialization: 欢迎!请告诉我你的GUI设计需求,包括你的目标用户、功能需
求以及任何你希望我考虑的特殊设计元素。
kimi的回答: 要求我提供如下的关键信息
按照kimi的需求,细化了这个应用程序的各个要求。我要做的是一个串口监控程序。因此需要5个下拉框进行配置。并且用PyQt5来进行搭建
根据我的需求,kimi给了我一个设计概要
感谢您提供的详细信息。根据您的需求,我将为您设计一个面向嵌入式开发人员的图形用户界面(GUI),该界面将使用PyQt5进行开发。以下是根据您的要求制定的设计概要:
设计概要
1. 目标用户
用户群体:嵌入式开发人员
2. 功能需求
语言:中文界面
下拉框:
端口:提供COM2至COM31的选项
波特率:提供9600, 115200, 2000000的选项
数据位:提供5, 6, 7, 8的选项
奇偶检验:提供None, Odd的选项
停止位:提供1, 1.5的选项
按钮:一个“确定”按钮,用于根据用户选择的参数配置串口并读取数据
全屏模式:支持全屏尺寸,以便于在大型显示器或多任务环境中使用
3. 设计偏好
参考软件:SecureCRT的布局和设计
4. 技术要求
开发框架:PyQt5
5. 设计流程
需求分析:确认用户需求和功能点。
草图设计:创建初步的界面草图,包括布局和组件位置。
高保真原型:基于草图设计,开发一个高保真的原型,包括交互元素和布局的详细说明。
用户测试:进行用户测试,收集反馈。
迭代设计:根据用户反馈进行设计迭代,直至最终确定GUI设计。
6. 输出格式
设计原型:高保真的设计原型,包括交互元素和布局的详细说明。
7. 兼容性和可访问性
操作系统:确保在Windows操作系统上运行良好。
屏幕阅读器:考虑到可访问性,设计将支持屏幕阅读器。
8. 预算和时间线
请提供您的预算和期望的项目完成时间,以便进行合理的项目规划。
9. 现有材料
如果您有任何现有的设计材料或品牌指南,请提供,以便保持设计的一致性。
我认同这个设计概要。请Kimi继续。因此kimi继续输出了设计草图
我确认设计,让kimi提供代码
kimi提供了代码
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QComboBox, QPushButton, QVBoxLayout, QHBoxLayout
class SerialConfigApp(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setWindowTitle('嵌入式串口配置工具')
# 端口下拉框
port_label = QLabel('端口:')
self.port_combo = QComboBox()
self.port_combo.addItems(['COM2', 'COM3', 'COM4', 'COM5', 'COM6', 'COM7', 'COM8', 'COM9', 'COM10', 'COM11', 'COM12', 'COM13', 'COM14', 'COM15', 'COM16', 'COM17', 'COM18', 'COM19', 'COM20', 'COM21', 'COM22', 'COM23', 'COM24', 'COM25', 'COM26', 'COM27', 'COM28', 'COM29', 'COM30', 'COM31'])
# 波特率下拉框
baud_rate_label = QLabel('波特率:')
self.baud_rate_combo = QComboBox()
self.baud_rate_combo.addItems(['9600', '115200', '2000000'])
# 数据位下拉框
data_bits_label = QLabel('数据位:')
self.data_bits_combo = QComboBox()
self.data_bits_combo.addItems(['5', '6', '7', '8'])
# 奇偶检验下拉框
parity_label = QLabel('奇偶检验:')
self.parity_combo = QComboBox()
self.parity_combo.addItems(['None', 'Odd'])
# 停止位下拉框
stop_bits_label = QLabel('停止位:')
self.stop_bits_combo = QComboBox()
self.stop_bits_combo.addItems(['1', '1.5'])
# 确定按钮
self.confirm_button = QPushButton('确定')
self.confirm_button.clicked.connect(self.on_confirm)
# 布局
combo_layout = QHBoxLayout()
combo_layout.addWidget(port_label)
combo_layout.addWidget(self.port_combo)
combo_layout.addWidget(baud_rate_label)
combo_layout.addWidget(self.baud_rate_combo)
combo_layout.addWidget(data_bits_label)
combo_layout.addWidget(self.data_bits_combo)
combo_layout.addWidget(parity_label)
combo_layout.addWidget(self.parity_combo)
combo_layout.addWidget(stop_bits_label)
combo_layout.addWidget(self.stop_bits_combo)
button_layout = QHBoxLayout()
button_layout.addWidget(self.confirm_button)
main_layout = QVBoxLayout()
main_layout.addLayout(combo_layout)
main_layout.addLayout(button_layout)
self.setLayout(main_layout)
def on_confirm(self):
# 这里应添加打开串口并读取数据的逻辑
print("串口配置确认 - 端口: {}, 波特率: {}, 数据位: {}, 奇偶检验: {}, 停止位: {}".format(
self.port_combo.currentText(),
self.baud_rate_combo.currentText(),
self.data_bits_combo.currentText(),
self.parity_combo.currentText(),
self.stop_bits_combo.currentText()
))
# 请注意,实际应用中需要实现串口通信的代码
# 主程序
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = SerialConfigApp()
ex.show()
sys.exit(app.exec_())
此时运行,弹出软件界面如下。下拉框符合我的需求。但是没有显示框来显示从串口读的内容。而且代码中也没有去读取串口的动作
继续给kimi提需求,用一个显示框,来显示读出串口的数据,而且显示框要有下拉条
kimi生成的新代码
import sys
import serial
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QComboBox, QPushButton, QVBoxLayout, QHBoxLayout, QTextEdit
from PyQt5.QtCore import Qt
class SerialConfigApp(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setWindowTitle('嵌入式串口配置工具')
# 定义垂直布局
main_layout = QVBoxLayout(self)
# 端口下拉框
self.port_combo = QComboBox()
self.port_combo.addItems(['COM1', 'COM2', 'COM3', 'COM4']) # 示例端口,根据需要添加更多
# 波特率下拉框
self.baud_rate_combo = QComboBox()
self.baud_rate_combo.addItems(['9600', '115200', '2000000'])
# 数据位下拉框
self.data_bits_combo = QComboBox()
self.data_bits_combo.addItems(['7', '8'])
# 停止位下拉框
self.stop_bits_combo = QComboBox()
self.stop_bits_combo.addItems(['1', '2'])
# 奇偶校验下拉框
self.parity_combo = QComboBox()
self.parity_combo.addItems(['None', 'Even', 'Odd'])
# 创建确定按钮
self.confirm_button = QPushButton('确定')
self.confirm_button.clicked.connect(self.on_confirm)
# 创建文本显示框
self.data_display = QTextEdit()
self.data_display.setReadOnly(True)
self.data_display.setStyleSheet("background-color: white;")
# 设置文本框的滚动条策略,这里同时设置了垂直和水平滚动条
self.data_display.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn)
self.data_display.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOn)
# 创建水平布局并添加组件
combo_layout = QHBoxLayout()
combo_layout.addWidget(QLabel('端口:'))
combo_layout.addWidget(self.port_combo)
combo_layout.addWidget(QLabel('波特率:'))
combo_layout.addWidget(self.baud_rate_combo)
combo_layout.addWidget(QLabel('数据位:'))
combo_layout.addWidget(self.data_bits_combo)
combo_layout.addWidget(QLabel('停止位:'))
combo_layout.addWidget(self.stop_bits_combo)
combo_layout.addWidget(QLabel('奇偶校验:'))
combo_layout.addWidget(self.parity_combo)
# 创建底部按钮布局
button_layout = QHBoxLayout()
button_layout.addWidget(self.confirm_button)
# 将布局添加到主布局
main_layout.addLayout(combo_layout)
main_layout.addLayout(button_layout)
main_layout.addWidget(self.data_display)
# 设置窗口的布局
self.setLayout(main_layout)
def on_confirm(self):
# 获取用户配置的串口参数
port = self.port_combo.currentText()
baud_rate = int(self.baud_rate_combo.currentText())
data_bits = int(self.data_bits_combo.currentText())
stop_bits = int(self.stop_bits_combo.currentText())
parity = self.parity_combo.currentText()
# 打开串口并读取数据
try:
self.serial = serial.Serial(port, baud_rate, timeout=1)
# 读取一行数据
data = self.serial.readline().decode('utf-8', errors='ignore')
self.serial.close()
except serial.SerialException as e:
data = f"无法打开串口: {e}"
except Exception as e:
data = f"读取串口时发生错误: {e}"
# 显示数据
self.displaySerialData(data)
def displaySerialData(self, data):
self.data_display.append(data)
self.data_display.centerCursor()
sb = self.data_display.verticalScrollBar()
sb.setValue(sb.maximum())
# 主程序
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = SerialConfigApp()
ex.show()
sys.exit(app.exec_())
再次于运行。界面如下,增加了显示框,以及左右,上下的拉条
kimi现在有了提示词功能。在提示词的加持下。和kimi的操作更加简单了
我是和AI一起写代码的程序员,更多AI有趣的玩法关注公众号
AI时代大有可为,对AI工具,AI智能体,AI赚钱感兴趣的欢迎添加vx交流。