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