下面是从网络上找的学习资料:
图片上标的就是在控件上添加一些图标,有利于GUI的美观效果。
布局如下:
要想做到如上效果需要按照如下步骤:
1,制作qrc文件。
在Qt Creator(是一种画GUI的工具)里单击"File"->"New File or Project..."菜单项,在新键文件与项目对话框里选择"Qt Resource File",然后按照向导的指引设置资源文件的文件名,并添加到当前项目里。
例如:命名资源文件名为res.qrc。在项目文件目录树中,会自动创建一个与Headers,Sources,Forms并列的Resources文件组,在Resources组里有res.qrc节点。
如图:在此处添加前缀。
然后在此处写上前缀名。然后在此处添加文件,将想要的图片文件加入。
效果如下:
然后便可以在文件中添加图标,按照下图,向控件添加图片:
在将.ui文件和.qrc文件制作好之后,可以将两个文件放到python工程下,使用工具将.ui文件转换为.py,此处暂时不叙述。将.qrc文件转为.py文件可将下图:
Progarm:填写python.exe文件路径。
Arguments:-m PyQt5.pyrcc_main $FileName$ -o $FileNameWithoutExtension$_rc.py(固定格式,Copy即可)
Working directory:$FileDir$(固定格式,Copy即可)
.qrc文件转换为.py文件的内容大部分为数字,在此不做叙述。
main文件中的代码如下:有关其他类的代码不做叙述。
import sys
from PyQt5.QtWidgets import QApplication,QWidget
from PyQt5.QtCore import pyqtSlot
from PyQt5.QtGui import QIcon
from widget import Ui_Widget
from human import Human
class QmyWidget(QWidget):
def __init__(self,parent=None):
super().__init__(parent)
## super()只绑定输入参数的第一个参数,即QWidget类,进行初始化,输入参数parent,执行这条语句后,self就是一个QWidget对象。
self.ui=Ui_Widget()
# 显示地创建了一个Ui_FormHello类的私有属性self.__ui,即私有属性self.__ui包含了可视化设计的UI窗体上的所有组件,
# 所以,只有通过self.__ui才可以访问窗体上的组件,包括调用其创建界面组件的setupUi()函数
self.ui.setupUi(self)
# 构造UI
self.boy=Human("Boy",16)
self.boy.nameChanged.connect(self.do_nameChanged)
self.boy.ageChanged.connect(self.do_ageChanged_int)
self.boy.ageChanged[str].connect(self.do_ageChanged_str)
# 自定义信号,和相关的槽函数
## ==========由connectSlotsByName()自动与组件的信号关联的槽函数=========
def on_sliderSetAge_valueChanged(self,value):
self.boy.setAge(value)
def on_btnSetName_clicked(self):
hisName=self.ui.editNameInput.text()
self.boy.setName(hisName)
def on_btnClose_clicked(self):
self.close()
## ===================自定义槽函数===================================
def do_nameChanged(self,name):
self.ui.editNameHello.setText("Hello,"+name)
@pyqtSlot(int)
def do_ageChanged_int(self,age):
self.ui.editAgeInt.setText(str(age))
@pyqtSlot(str)
def do_ageChanged_str(self,info):
self.ui.editAgeStr.setText(info)
if __name__ == '__main__':
app=QApplication(sys.argv)
icon=QIcon("images/app.ico")
app.setWindowIcon(icon)
form=QmyWidget()
form.show()
sys.exit(app.exec_())