使用QT Designer + python 编写小程序并打包成exe

这篇博客介绍了如何利用QtDesigner设计GUI界面,结合PyCharm编写Python小程序,实现一个简单的计算器功能。然后,通过pyinstaller将Python脚本打包成可执行的exe文件。博主在过程中遇到并解决了将.ui文件转换为.py文件,以及添加翻译功能等问题。
摘要由CSDN通过智能技术生成

ui界面设计
视频链接
Qtdesigner设计实例——计算器 +可执行文件exe制作
QT Designer + python 编写小程序并打包成exe
使用Qt Designer和PyCharm Python3.7实现简易计算器 并打包成.exe文件

遇到的问题

在这里插入图片描述
设计步骤:
1.选择MainWindow窗口,选取text Edit、label、push button
2.插入信号与槽函数
3.保存为ui文件
.ui文件转变为.py文件

from PyQt5 import QtCore, QtGui, QtWidgets
import pachong

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 600)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.textEdit = QtWidgets.QTextEdit(self.centralwidget)
        self.textEdit.setGeometry(QtCore.QRect(320, 90, 111, 41))
        self.textEdit.setStyleSheet("\n"
"background-color: rgb(255, 170, 255);")
        self.textEdit.setObjectName("textEdit")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(330, 260, 92, 28))
        self.pushButton.setObjectName("pushButton")
        self.widget = QtWidgets.QWidget(self.centralwidget)
        self.widget.setGeometry(QtCore.QRect(450, 160, 258, 216))
        self.widget.setObjectName("widget")
        self.verticalLayout = QtWidgets.QVBoxLayout(self.widget)
        self.verticalLayout.setContentsMargins(0, 0, 0, 0)
        self.verticalLayout.setObjectName("verticalLayout")
        self.label_2 = QtWidgets.QLabel(self.widget)
        self.label_2.setStyleSheet("background-color: rgb(85, 255, 255);")
        self.label_2.setObjectName("label_2")
        self.verticalLayout.addWidget(self.label_2)
        self.textEdit_3 = QtWidgets.QTextEdit(self.widget)
        self.textEdit_3.setObjectName("textEdit_3")
        self.verticalLayout.addWidget(self.textEdit_3)
        self.widget1 = QtWidgets.QWidget(self.centralwidget)
        self.widget1.setGeometry(QtCore.QRect(40, 160, 258, 218))
        self.widget1.setObjectName("widget1")
        self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.widget1)
        self.verticalLayout_2.setContentsMargins(0, 0, 0, 0)
        self.verticalLayout_2.setObjectName("verticalLayout_2")
        self.horizontalLayout = QtWidgets.QHBoxLayout()
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.label = QtWidgets.QLabel(self.widget1)
        self.label.setStyleSheet("background-color: rgb(85, 255, 255);")
        self.label.setObjectName("label")
        self.horizontalLayout.addWidget(self.label)
        self.verticalLayout_2.addLayout(self.horizontalLayout)
        self.textEdit_2 = QtWidgets.QTextEdit(self.widget1)
        self.textEdit_2.setObjectName("textEdit_2")
        self.verticalLayout_2.addWidget(self.textEdit_2)
        self.splitter = QtWidgets.QSplitter(self.centralwidget)
        self.splitter.setGeometry(QtCore.QRect(270, 410, 191, 28))
        self.splitter.setOrientation(QtCore.Qt.Horizontal)
        self.splitter.setObjectName("splitter")
        self.pushButton_2 = QtWidgets.QPushButton(self.splitter)
        self.pushButton_2.setObjectName("pushButton_2")
        self.pushButton_3 = QtWidgets.QPushButton(self.splitter)
        self.pushButton_3.setObjectName("pushButton_3")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 26))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        self.pushButton_2.clicked.connect(self.textEdit_2.clear)
        self.pushButton_2.clicked.connect(self.textEdit_3.clear)
        self.pushButton_3.clicked.connect(MainWindow.close)
		#这里添加了翻译链接按钮
        self.pushButton.clicked.connect(self.translation)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
    #添加了新的函数用于翻译按钮链接
    def translation(self):
        key = self.textEdit_2.toPlainText()
        st = pachong.translate(key)
        self.textEdit_3.setText(st)
    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.textEdit.setHtml(_translate("MainWindow", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
"p, li { white-space: pre-wrap; }\n"
"</style></head><body style=\" font-family:\'SimSun\'; font-size:9.07563pt; font-weight:400; font-style:normal;\">\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:14pt;\">爬虫翻译</span></p></body></html>"))
        self.pushButton.setText(_translate("MainWindow", "翻译"))
        self.label_2.setText(_translate("MainWindow", "翻译结果"))
        self.label.setText(_translate("MainWindow", "请输入翻译内容"))
        self.pushButton_2.setText(_translate("MainWindow", "清楚所有文本"))
        self.pushButton_3.setText(_translate("MainWindow", "关闭窗口"))

pachong.py文件

import json
import urllib.request
import urllib.parse

def translate(key):
    #通过抓包的方式获取post的url,并不是浏览器地址栏的url
    url = "http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule"
    #用户接口输入
    #key=input("请输入需要翻译的文字:")
    #发送到web服务器的表单数据
    formdata ={
        "i": key,
        "from": "AUTO",
        "to": "AUTO",
        "smartresult": "dict",
        "client": "fanyideskweb",
        "salt": "1537698317221",
        "sign": "b569c8bf54bf1b0d71725726e7c1a5",
        "doctype": "json",
        "version": "2.1",
        "keyfrom": "fanyi.web",
        "action": "FY_BY_REALTIME",
        "typoResult": "false"
        }
    #headers
    headers={ "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36"}
    #经过urlencode转码
    data = urllib.parse.urlencode(formdata).encode(encoding='gbk')
    #如果Request()方法里的data参数里有值,那么这个请求就是post
    #如果没有,则是get请求
    request = urllib.request.Request(url,data=data, headers = headers)

    repost = urllib.request.urlopen(request)

    html=repost
    data = json.load(html)
    #print(data['translateResult'][0][0]['tgt'])
    dic_result = data['translateResult'][0][0]['tgt']
    return dic_result

主函数文件

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
import a

if __name__ == '__main__':
    app = QApplication(sys.argv)
    mainw = QMainWindow()
    ui = a.Ui_MainWindow()
    ui.setupUi(mainw)
    mainw.show()
    sys.exit(app.exec_())

pyinstaller打包成exe文件

pyinstaller -F -w calculate_main.py

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: charm是一种集开发环境(IDE),专门用于开发Python程序。它提供了丰富的功能和工具,方便开发者编写、调试和运行Python代码。QtdesignerQT的界面设计器,可以通过可视化界面创建和编辑用户界面。Pyuic是Qt的用户界面类转换工具,可以将用Qtdesigner设计的界面文件转换为Python代码。 首先,我们需要安装charm、QT和pyuic。安装完后,打开charm,并创建一个新的Python项目。在项目目录中,我们可以创建一个新的.py文件,用于编写Python代码。 接下来,我们可以在charm中打开Qtdesigner,创建我们想要的界面。可以简单地拖放各种控件,并对其进行编辑和布局。完后,我们可以通过点击保存按钮,将设计好的界面保存为.ui文件。 然后,我们需要用pyuic将.ui文件转换为Python代码。打开charm的终端,使用以下命令行将.ui文件转换为.py文件: pyuic5 -o output_file.py input_file.ui 其中,output_file.py为输出的Python文件名,input_file.ui为输入的.ui文件名。 转换完后,我们可以在Python代码中使用转换后的.py文件。可以通过导入转换后的Python文件,并在代码中调用相应的界面类来加载和显示用户界面。 在charm中,我们可以通过调试功能来测试和调试我们的程序。我们可以在程序中设置断点,并通过调试器进行步进调试,查看变量的值和程序流程。 除了以上基本用法,charm还提供了许多其他功能,例如代码自动完、语法检查、版本控制等等。我们可以根据自己的需要进一步学习和使用这些功能。 总之,通过使用charm、Qtdesigner和pyuic,我们可以方便地进行Python程序开发和界面设计。在开发过程中,我们可以使用charm提供的丰富功能和工具,来提高开发效率和程序质量。 ### 回答2: charm是一款集开发环境(IDE),用于编写和调试Python程序。它提供了丰富的功能和工具,使开发者能够更加高效地开发Python应用程序。 Qt Designer一个可视化界面设计工具,用于创建和编辑Qt界面。它提供了拖放式设计和一系列的可视化控件,使界面设计变得简单和直观。 Pyuic是Qt中的一个命令行工具,用于将Qt Designer的.ui文件转换为Python代码。通过将.ui文件转换为Python代码,我们可以在Python应用程序中使用这些界面。 使用Charm进行Pyuic的教程如下: 1. 在Charm中打开一个Python项目或创建一个新项目。 2. 在项目中创建一个新的Python文件,用于编写你的应用程序。 3. 打开Qt Designer并创建或编辑你的界面。将界面保存为.ui文件。 4. 在Charm中打开终端或命令行界面。 5. 输入以下命令将.ui文件转换为Python代码: pyuic5 input.ui -o output.py 其中input.ui是你的输入文件名,output.py是你的输出文件名。 6. 在Charm中打开你的Python文件,并将生的代码导入到你的应用程序中。 7. 根据需要对生的代码进行任何必要的修改和自定义。 8. 运行你的应用程序,查看界面是否按预期显示。 总结:使用Charm编写Python程序时,可以使用Qt Designer创建和编辑界面,然后使用Pyuic将.ui文件转换为Python代码。这样,我们可以方便地将界面与应用程序集在一起,实现我们的功能需求。 ### 回答3: charm是一款集开发环境(IDE),可用于开发Python程序。qtdesignerQt框架的一个可视化设计工具,用于创建和编辑用户界面。pyuic是Qt一个命令行工具,用于将qtdesigner创建的UI文件转换为Python代码。 使用qtdesigner和pyuic可以在可视化界面上设计并生代码,方便快捷。 首先,在charm中创建一个新的项目,并打开项目文件夹。 然后,打开qtdesigner,通过拖拽和放置组件的方式设计用户界面。可以添加按钮、文本框、标签等常见的UI元素,并设置它们的属性和布局。 完设计后,将UI文件保存,并返回到charm。 在charm的终端中,使用pyuic命令将UI文件转换为Python代码。命令的格式为:pyuic -o 输出文件.py 输入文件.ui 其中,输出文件.py是你想要生Python文件名称,输入文件.ui是之前保存的UI文件的路径。 执行命令后,pyuic会根据UI文件生对应的Python代码,并保存在指定的Python文件中。 最后,可以在charm中编写其他功能代码,通过导入刚生Python文件来使用UI界面。 总结来说,使用charm、qtdesigner和pyuic可以轻松地创建和使用Qt的用户界面。这种可视化设计和代码生的方式省去了手动编写代码的繁琐操作,提高了开发效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值