用户:中华程序员查看:0 回复:2 评论:0 创建时间:2020-05-14T17:24:24
【作品展示】

【作品介绍】
Python模拟器(随身Py),超实用,还有系统托盘功能。请大家多多点赞👍
【作品源代码】
import sys
from PySide2.QtWidgets import *
from PySide2.QtCore import *
from PySide2.QtGui import *
class Ui_Code(object):
def setupUi(self, MainWindow):
if not MainWindow.objectName():
MainWindow.setObjectName(u"MainWindow")
MainWindow.resize(731, 668)
self.centralwidget = QWidget(MainWindow)
self.centralwidget.setObjectName(u"centralwidget")
self.te_code = QTextEdit(self.centralwidget)
self.te_code.setObjectName(u"te_code")
self.te_code.setGeometry(QRect(喵))
font = QFont()
font.setPointSize(13)
self.te_code.setFont(font)
self.lb_title = QLabel(self.centralwidget)
self.lb_title.setObjectName(u"lb_title")
self.lb_title.setGeometry(QRect(310, 0, 131, 71))
font1 = QFont()
font1.setPointSize(30)
self.lb_title.setFont(font1)
self.splitter = QSplitter(self.centralwidget)
self.splitter.setObjectName(u"splitter")
self.splitter.setGeometry(QRect(10, 70, 711, 41))
self.splitter.setOrientation(Qt.Horizontal)
self.pbtn_play = QPushButton(self.splitter)
self.pbtn_play.setObjectName(u"pbtn_play")
self.pbtn_play.setFont(font)
self.splitter.addWidget(self.pbtn_play)
self.pbtn_clean = QPushButton(self.splitter)
self.pbtn_clean.setObjectName(u"pbtn_clean")
self.pbtn_clean.setFont(font)
self.splitter.addWidget(self.pbtn_clean)
self.pbtn_new = QPushButton(self.splitter)
self.pbtn_new.setObjectName(u"pbtn_new")
self.pbtn_new.setFont(font)
self.splitter.addWidget(self.pbtn_new)
self.pbtn_save = QPushButton(self.splitter)
self.pbtn_save.setObjectName(u"pbtn_save")
self.pbtn_save.setFont(font)
self.splitter.addWidget(self.pbtn_save)
self.pbtn_save2 = QPushButton(self.splitter)
self.pbtn_save2.setObjectName(u"pbtn_save2")
self.pbtn_save2.setFont(font)
self.splitter.addWidget(self.pbtn_save2)
self.pbtn_open = QPushButton(self.splitter)
self.pbtn_open.setObjectName(u"pbtn_open")
self.pbtn_open.setFont(font)
self.splitter.addWidget(self.pbtn_open)
self.pbtn_back = QPushButton(self.splitter)
self.pbtn_back.setObjectName(u"pbtn_back")
self.pbtn_back.setFont(font)
self.splitter.addWidget(self.pbtn_back)
MainWindow.setCentralWidget(self.centralwidget)
self.retranslateUi(MainWindow)
QMetaObject.connectSlotsByName(MainWindow)
# setupUi
def retranslateUi(self, MainWindow):
MainWindow.setWindowTitle(QCoreApplication.translate(
"MainWindow", u"\u968f\u8eabPy\u8f6f\u4ef6", None))
self.lb_title.setText(QCoreApplication.translate(
"MainWindow", u"\u968f\u8eabPy", None))
self.pbtn_play.setText(QCoreApplication.translate(
"MainWindow", u"\u8fd0\u884c", None))
self.pbtn_clean.setText(QCoreApplication.translate(
"MainWindow", u"\u6e05\u7a7a", None))
self.pbtn_new.setText(QCoreApplication.translate(
"MainWindow", u"\u65b0\u5efa", None))
self.pbtn_save.setText(QCoreApplication.translate(
"MainWindow", u"\u4fdd\u5b58", None))
self.pbtn_save2.setText(QCoreApplication.translate(
"MainWindow", u"\u53e6\u5b58\u4e3a", None))
self.pbtn_open.setText(QCoreApplication.translate(
"MainWindow", u"\u6253\u5f00", None))
self.pbtn_back.setText(QCoreApplication.translate(
"MainWindow", u"\u9000\u51fa", None))
# retranslateUi
class Tray(QSystemTrayIcon):
def __init__(self):
super().__init__()
self.setup()
self.show()
def setup(self):
self.is_show = True
self.icon = QIcon("Py.jpg")
self.setIcon(self.icon)
self.activated.connect(self.process)
self.Code = Code()
self.add_menu()
self.show()
def process(self, key):
if key == self.Trigger:
if self.is_show:
self.is_show = False
self.Code.hide()
else:
self.is_show = True
self.Code.show()
def add_menu(self):
self.menu = QMenu()
action = QAction("显示窗口", self, triggered=self.show_window)
self.menu.addAction(action)
action2 = QAction("隐藏窗口", self, triggered=self.hide_window)
self.menu.addAction(action2)
action3 = QAction("运行", self, triggered=self.play)
self.menu.addAction(action3)
action4 = QAction("退出", self, triggered=self.back)
self.menu.addAction(action4)
self.setContextMenu(self.menu)
def show_window(self):
self.Code.show()
def hide_window(self):
self.Code.hide()
def play(self):
self.Code.play()
def back(self):
sys.exit()
class Code(QMainWindow, Ui_Code):
def __init__(self):
super().__init__()
self.setupUi(self)
self.setup()
self.show()
def setup(self):
self.file_path = None
self.pbtn_play.clicked.connect(self.play)
self.pbtn_clean.clicked.connect(self.clean)
self.pbtn_save.clicked.connect(self.save)
self.pbtn_save2.clicked.connect(self.save2)
self.pbtn_open.clicked.connect(self.open)
self.pbtn_back.clicked.connect(self.back)
self.pbtn_new.clicked.connect(self.new)
def play(self):
try:
self.code = self.te_code.toPlainText()
exec(self.code)
except:
if self.code != "":
QMessageBox.warning(self, "随身Py", "代码有问题,请检查~")
def clean(self):
self.te_code.setText("")
def save(self):
if self.file_path is None or self.file_path != "":
try:
self.file_path = QFileDialog.getSaveFileName(
self, caption="随身Py", filter="*.py")[0]
with open(self.file_path, "w", encoding="utf-8") as f:
f.write(self.file_path)
QMessageBox.information(self, "随身Py", "保存成功~")
except:
QMessageBox.warning(self, "随身Py", "保存PY文件失败~")
else:
with open(self.file_path, "w", encoding="utf-8") as f:
f.write(self.file_path)
QMessageBox.information(self, "随身Py", "保存成功~")
def save2(self):
try:
self.file_path = QFileDialog.getSaveFileName(
self, caption="随身Py", filter="(*.py)")[0]
with open(self.file_path, "w", encoding="utf-8") as f:
f.write(self.code)
QMessageBox.information(self, "随身Py", "保存成功~")
except:
QMessageBox.warning(self, "随身Py", "另存为PY文件失败~")
def open(self):
try:
file_path = QFileDialog.getOpenFileName(
self, caption="随身Py", filter="(*.py)")[0]
with open(file_path, "r", encoding="utf-8") as f:
data = f.read()
self.te_code.setText(str(data))
except:
QMessageBox.warning(self, "随身Py", "打开PY文件失败~")
def back(self):
sys.exit()
def new(self):
if self.file_path is None:
chbool = QMessageBox.information(
self,
"随身Py", "还未保存当前文件,是否新建?",
QMessageBox.Yes,
QMessageBox.No,)
if chbool == QMessageBox.Yes:
self.file_path = None
self.te_code.setText("")
else:
self.file_path = None
self.te_code.setText("")
if __name__ == "__main__":
app = QApplication(sys.argv)
tray = Tray()
# window = Code()
sys.exit(app.exec_())
【提示】
部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:
https://python.codemao.cn