python操作界面_Python使用PyQt5的Designer工具创建UI界面
一、Designer-UI編輯器
Designer是pyqt5-tools帶的工具,默認可以在Python安裝目錄下找到的。我的之前項目導入過pyqt5-tools,所以我直接全盤搜索到了。
打開designer后,我們可以編輯我們想要的UI界面,下面是我編輯的測試界面:
編輯好界面,點擊保存 會生成一個.ui格式的文件。
二、將.ui文件轉.py文件
使用Designer創建出來的.ui文件不能被python讀取,所以我們需要轉成.py格式
使用工具:pyuic5, 也在python的安裝目錄下。
1.在pyuic5所在目錄打開命令行(若已將pyuic5加入環境變量,則忽略此步驟)。
2.然后執行以下命令:
1
pyuic5-oD:\test.pyD:\test.ui
生成test.py內容如下:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'C:\Users\Administrator.000\Desktop\log.ui'
#
# Created by: PyQt5 UI code generator 5.10.1
#
# WARNING! All changes made in this file will be lost!
fromPyQt5importQtCore,QtGui,QtWidgets
classUi_MainWindow(object):
defsetupUi(self,MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(800,600)
self.centralwidget=QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.printLogButton=QtWidgets.QPushButton(self.centralwidget)
self.printLogButton.setGeometry(QtCore.QRect(190,30,381,51))
self.printLogButton.setObjectName("printLogButton")
self.textEdit=QtWidgets.QTextEdit(self.centralwidget)
self.textEdit.setGeometry(QtCore.QRect(150,190,461,341))
self.textEdit.setObjectName("textEdit")
self.clearLogButton=QtWidgets.QPushButton(self.centralwidget)
self.clearLogButton.setGeometry(QtCore.QRect(190,110,381,51))
self.clearLogButton.setObjectName("clearLogButton")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar=QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0,0,800,23))
self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar)
self.statusbar=QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
defretranslateUi(self,MainWindow):
_translate=QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow","MainWindow"))
self.printLogButton.setText(_translate("MainWindow","打印Log"))
self.clearLogButton.setText(_translate("MainWindow","清除Log"))
三、創建簡單項目結構
我們新建個py項目,文件結構如下:
下面來填充代碼:
Entry.py(入口py腳本)
Python
1
2
3
4
5
6
importMainController
if__name__=='__main__':
mainController=MainController.MainController()
mainController.do()
MainView.py(將上一步生成的test.py內容copy進來)
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'C:\Users\Administrator.000\Desktop\log.ui'
#
# Created by: PyQt5 UI code generator 5.10.1
#
# WARNING! All changes made in this file will be lost!
fromPyQt5importQtCore,QtGui,QtWidgets
classUi_MainWindow(object):
defsetupUi(self,MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(800,600)
self.centralwidget=QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.printLogButton=QtWidgets.QPushButton(self.centralwidget)
self.printLogButton.setGeometry(QtCore.QRect(190,30,381,51))
self.printLogButton.setObjectName("printLogButton")
self.textEdit=QtWidgets.QTextEdit(self.centralwidget)
self.textEdit.setGeometry(QtCore.QRect(150,190,461,341))
self.textEdit.setObjectName("textEdit")
self.clearLogButton=QtWidgets.QPushButton(self.centralwidget)
self.clearLogButton.setGeometry(QtCore.QRect(190,110,381,51))
self.clearLogButton.setObjectName("clearLogButton")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar=QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0,0,800,23))
self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar)
self.statusbar=QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
defretranslateUi(self,MainWindow):
_translate=QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow","MainWindow"))
self.printLogButton.setText(_translate("MainWindow","打印Log"))
self.clearLogButton.setText(_translate("MainWindow","清除Log"))
MainController.py(Control腳本,處理MainView邏輯)
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
importMainView
importsys
importrandom
fromPyQt5.QtWidgetsimportQApplication
fromPyQt5.QtWidgetsimportQMainWindow
fromPyQt5importQtCore,QtGui,QtWidgets
classMainController():
defdo(self):
app=QApplication(sys.argv)
mainWindow=QMainWindow()
self.mainView=MainView.Ui_MainWindow()
self.mainView.setupUi(mainWindow)
self.mainView.printLogButton.clicked.connect(self.printLogClick)
self.mainView.clearLogButton.clicked.connect(self.clearLogClick)
# 重定向輸出
sys.stdout=EmittingStream(textWritten=self.normalOutputWritten)
sys.stderr=EmittingStream(textWritten=self.normalOutputWritten)
mainWindow.show()
sys.exit(app.exec_())
defprintLogClick(self):
print(random.random())
defclearLogClick(self):
self.mainView.textEdit.clear()
defnormalOutputWritten(self,text):
cursor=self.mainView.textEdit.textCursor()
cursor.movePosition(QtGui.QTextCursor.End)
cursor.insertText(text)
self.mainView.textEdit.setTextCursor(cursor)
self.mainView.textEdit.ensureCursorVisible()
classEmittingStream(QtCore.QObject):
textWritten=QtCore.pyqtSignal(str)
defwrite(self,text):
self.textWritten.emit(str(text))
當所有準備就緒后,我們來運行測試一下我們的成果吧~
最后編輯:2020-10-09作者:網蟲蟲
分享是一種快樂;
分享是一種美德;
分享是一種幸福!
總結
以上是生活随笔為你收集整理的python操作界面_Python使用PyQt5的Designer工具创建UI界面的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 分红和派息的区别?
- 下一篇: 朝朝盈最多能存多少?