关于我让chatGPT帮我用python写GUI这件事...

1 篇文章 0 订阅
1 篇文章 0 订阅

个人需求

用python编写一个GUI程序,在电脑上运行,功能是输入一个apk文件,修改版本号之后输出给我。
就这么简单,我还没展开,展开就是:
选择apk文件 – 解析apk – 修改apktool.yml文件中的versionCode和versionName – 构建新的apk – 签名apk
因为个人并不熟悉python,所以这个需求我委托了ChatGPT兄弟帮我搞搞
请添加图片描述

实现功能

下面是一些对话:
在这里插入图片描述这是完整代码,大家也可以试试:

python
import tkinter as tk
from tkinter import filedialog
import os
import shutil
import xml.etree.ElementTree as ET

# 导入 APK 文件
def import_apk():
    global apk_path
    apk_path = filedialog.askopenfilename()
    apk_label.config(text=apk_path)

# 修改 APK 文件版本号
def modify_apk():
    # 获取输入和输出文件路径
    input_path = apk_path
    output_path = os.path.splitext(input_path)[0] + '_modified.apk'

    # 使用 apktool 工具反编译 APK 文件
    os.system('apktool d -f "{}"'.format(input_path))

    # 修改版本号
    manifest_path = os.path.join(os.path.splitext(input_path)[0], 'AndroidManifest.xml')
    tree = ET.parse(manifest_path)
    root = tree.getroot()
    version_code = root.get('versionCode')
    version_name = root.get('versionName')
    version_code = int(version_code) + 1  # 将版本号 +1
    version_name = version_name + '.1'  # 在版本名称后面添加 .1
    root.set('versionCode', str(version_code))
    root.set('versionName', version_name)
    tree.write(manifest_path)

    # 使用 apktool 工具重新打包 APK 文件
    os.system('apktool b -f "{0}" -o "{1}"'.format(os.path.splitext(input_path)[0], output_path))

    # 删除反编译文件夹
    shutil.rmtree(os.path.splitext(input_path)[0])

    # 更新输出文件标签
    output_label.config(text=output_path)

# 创建主窗口
root = tk.Tk()
root.title('APK 版本号修改工具')

# 创建 APK 文件选择按钮和标签
apk_button = tk.Button(root, text='选择 APK 文件', command=import_apk)
apk_button.pack(pady=10)
apk_label = tk.Label(root, text='请选择 APK 文件')
apk_label.pack()

# 创建修改按钮和标签
modify_button = tk.Button(root, text='修改 APK 文件版本号', command=modify_apk)
modify_button.pack(pady=10)
output_label = tk.Label(root, text='输出文件路径')
output_label.pack()

# 进入主循环
root.mainloop()

复制粘贴,启动!
在这里插入图片描述
还真的是有模有样,选择apk文件后点击“修改APK文件版本号”按钮,程序会去解析apk文件并且修改AndroidManifest.xml的版本号,使其版本号自动+1。

不出意外,就要出意外了,首先是解析apk后输出路径output_path的问题,是在当前python文件目录下,也就是说在修改AndroidManifest的时候,如果apk文件并不跟python文件在同一路径下,就会报错:

FileNotFoundError: [Errno 2] No such file or directory: 'F:/apk\\AndroidManifest.xml'

将路径改对后发现,apk解析后版本号并不能再AndroidManifest上查看,只有Android旧版本可以做到,现在新版本的Android apk兼容高版本的安卓代码(具体可以参考:Manifest中找不到versionCode? ),这个版本信息就不能再AndroidManifest.xml中获取了,更别说修改了。

搞反编译有经验的我马上就知道需要修改的文件是apktool.yml,马上嘟嘟嘟写好了。

上面的案例可以看出来,chatGPT帮我搭了个样板,编程的逻辑和思路都没错,只是可能有一些需要修改的,总而言之,目的达到了,这对之前对于python编程经验几乎为0的我来说很不错了,框架其实就已经写好了,后面只是在这个框架上修改东西,新增功能就好了。

另外,我还让他(chatGPT)帮我调节了样式,例如宽高尺寸,显示居中等…
在这里插入图片描述
有个很有意思的地方,我把提问里的“居中”写成“举重”了哈哈哈哈,然后这是他的回答:

在这里插入图片描述
在这里插入图片描述
代码在这,要看也可以看下:

python
import tkinter as tk

# 创建主窗口
root = tk.Tk()
root.title('举重计算器')

# 设置 GUI 界面大小为屏幕宽度和高度的三分之一
screen_width = root.winfo_screenwidth()
screen_height = root.winfo_screenheight()
gui_width = screen_width // 3
gui_height = screen_height // 3
root.geometry('{}x{}'.format(gui_width, gui_height))

# 定义默认的举重数值
default_weight = 50

# 创建体重输入框和标签
weight_label = tk.Label(root, text='体重(kg):')
weight_label.pack()
weight_var = tk.StringVar(value=default_weight)
weight_entry = tk.Entry(root, textvariable=weight_var)
weight_entry.pack()

# 创建重量输入框和标签
lift_label = tk.Label(root, text='举重(kg):')
lift_label.pack()
lift_var = tk.StringVar(value=default_weight)
lift_entry = tk.Entry(root, textvariable=lift_var)
lift_entry.pack()

# 创建计算按钮和标签
calculate_button = tk.Button(root, text='计算')
calculate_button.pack(pady=10)
result_label = tk.Label(root, text='结果:')
result_label.pack()

# 进入主循环
root.mainloop()

还蛮认真的咧~

还有一个事情也比较有趣,我在让他帮我设计一个Loading窗口时,出现了一个报错,我把报错贴出来问他,哈哈居然先跟我道歉了:
在这里插入图片描述
有些提供的修改方案有时候还是会有新的报错,持续抛给他让他解决,大概率是可以完成你的需求的。

使用总结

在使用ChatGPT编程过程中,有好的体验也有比较不好的体验,例如有个问题但是得不到好的回答,有些需求可能没那么容易实现,或者难以描述清楚具体的需求等…但!总得来说好的体验更多,ChatGPT给我的正反馈是很足的,让我这个刚接触py语言的人来说,节省了很多的学习成本。

效果展示

最后 这是我最终靠ChatGPT实现的一个python GUI程序:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python中,可以使用不同的GUI库来进行GUI设计。其中,tkinter是Python自带的标准GUI库,可以直接导入并使用。通过导入tkinter模块,可以创建一个简单的窗口。下面是一个示例代码: ```python from tkinter import * def embedded_function(): # 在这里编你的嵌入函数的代码 pass top = Tk() # 创建一个按钮,并将嵌入函数与按钮的点击件绑定 button = Button(top, text="点击我", command=embedded_function) button.pack() top.mainloop() ``` 在这个示例中,我们创建了一个窗口,并在窗口中添加了一个按钮。当按钮被点击时,会执行嵌入函数`embedded_function()`。你可以在`embedded_function()`中编你想要执行的功能代码。 #### 引用[.reference_title] - *1* *3* [Python GUI 设计(一)———Tkinter窗口创建、组件布局](https://blog.csdn.net/lyx4949/article/details/123137002)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [python GUI库图形界面开发之PyQt5浏览器控件QWebEngineView详细使用方法](https://blog.csdn.net/weixin_39959298/article/details/111448250)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值