参考教程:痞子衡嵌入式:超级好用的可视化PyQt GUI构建工具(Qt Designer)
随便画了一个界面
然后我把它保存在F盘中,命名为first_use.ui
确实,因为它不知道我把first_use.ui放在了哪。
如果就放在admin文件夹下呢?可以吗?
它出现了!
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'first_use.ui'
#
# Created by: PyQt5 UI code generator 5.9.2
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
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.frame = QtWidgets.QFrame(self.centralwidget)
self.frame.setGeometry(QtCore.QRect(170, 90, 391, 371))
self.frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame.setObjectName("frame")
self.verticalLayoutWidget = QtWidgets.QWidget(self.frame)
self.verticalLayoutWidget.setGeometry(QtCore.QRect(50, 250, 114, 151))
self.verticalLayoutWidget.setObjectName("verticalLayoutWidget")
self.verticalLayout = QtWidgets.QVBoxLayout(self.verticalLayoutWidget)
self.verticalLayout.setContentsMargins(0, 0, 0, 0)
self.verticalLayout.setObjectName("verticalLayout")
self.ok_Button = QtWidgets.QPushButton(self.verticalLayoutWidget)
self.ok_Button.setObjectName("ok_Button")
self.verticalLayout.addWidget(self.ok_Button)
self.verticalLayoutWidget_2 = QtWidgets.QWidget(self.frame)
self.verticalLayoutWidget_2.setGeometry(QtCore.QRect(110, 90, 201, 131))
self.verticalLayoutWidget_2.setObjectName("verticalLayoutWidget_2")
self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.verticalLayoutWidget_2)
self.verticalLayout_2.setContentsMargins(0, 0, 0, 0)
self.verticalLayout_2.setObjectName("verticalLayout_2")
self.textEdit = QtWidgets.QTextEdit(self.verticalLayoutWidget_2)
self.textEdit.setObjectName("textEdit")
self.verticalLayout_2.addWidget(self.textEdit)
self.label = QtWidgets.QLabel(self.frame)
self.label.setGeometry(QtCore.QRect(140, 40, 171, 20))
self.label.setObjectName("label")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 30))
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)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.ok_Button.setText(_translate("MainWindow", "确定"))
self.label.setText(_translate("MainWindow", "试用qtdesigner"))
现在,为了使用这个py文件,我将创建一个名为designer_learning的project,并且把first_use.py放进去。再创建一个main_use.py,环境还是database环境(虽然不知道为什么要这么做,我这次用的qtdesigner是安装在默认环境下的,因为昨天晚上安装在database下的qtdesigner显示缺少一个.dll文件打不开。)
每次我选这个python interpreter的时候都特别纠结,因为我不知道怎么选。好像我每次建一个文件或者安装一个新的环境都会有一个新的python.exe文件。这次这个main_firstuse文件下的python居然还显示invalid。最后我选择database的那个。
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
# 导入my_win.py中内容
from first_use import *
# 创建mainWin类并传入Ui_MainWindow
class mainWin(QMainWindow, Ui_MainWindow):
def __init__(self, parent=None):
super(mainWin, self).__init__(parent)
self.setupUi(self)
if __name__ == '__main__':
# 下面是使用PyQt5的固定用法
app = QApplication(sys.argv)
main_win = mainWin()
main_win.show()
sys.exit(app.exec_())
就是说,虽然我也不知道是什么时候安装的sys包,但是我居然成功了:
现在把mainWin这个类修改一下
class mainWin(QMainWindow, Ui_MainWindow):
def __init__(self, parent=None):
super(mainWin, self).__init__(parent)
self.setupUi(self)
# 将响应函数绑定到指定Button
self.ok_Button.clicked.connect(self.showMessage)
# Button响应函数
def showMessage(self):
self.textEdit.setText('hello world')
报错:
应该就是tab和空格的问题。把报错行之前的空格删掉,再重新打空格到同样的位置就可以了。再试一次: