最近几个项目的接口都使用了pyqt库,比如商城的抽奖机器人,新手引导机器人等,不得不赞一下的强大和漂亮Pyqt在这里:由于在这个项目之前,我从来没有使用过qt。在项目开发过程中学到了很多知识,遇到了很多问题。他们中的许多人直到现在才一知半解。我会在这里记录我遇到的问题和我的解决方法。在界面设计之初,我也是使用QtDesigner和PyUIC按照教程生成界面代码。这应该是个不错的选择,但我实在不会用,于是转而自己写代码,感觉更好。1.我用到的一些组件其他用到的函数:QLineEdit:setPlaceholderText('设置默认提示符')setMaxLength()最大输入长度QLabel:setAlignment(Qt.AlignCenter)将标签中的文本居中QComboBox:useaddItem('a')或addItems(list)添加选项,可以添加一个列表;2.按钮点击事件为按钮添加点击事件,当按钮被点击时执行相应的函数,函数不加括号。pushButton.clicked.connect(self.function)3.在多个界面之间跳转。原以为实现这个功能并不难,但是发现自己的思路有点简单,最后用了一个貌似可以解决这个问题的方案简单方法:创建一个jump.py文件作为主文件,创建一个按钮点击事件显示不同窗口的.show()和隐藏.hide()。如:fromwindowAimport*fromwindowBimport*fromwindowCimport*app=QApplication(sys.argv)wa=windowA()wb=windowB()wc=windowC()wa.mainWnd.show()defeventA():wb.mainWnd.show()wa.mainWnd.hide()defeventB():wc.mainWnd.show()wb.mainWnd.hide()wa.pushButton.clicked.connect(eventA)wb.pushButton.clicked.connect(eventB)if__name__=="__main__":app.aboutToQuit.connect(app.deleteLater)app.exit(app.exec_())四、美化不是美化,而是对界面的布局进行一些改动。4.1LayoutsetSpacing(10):各个组件之间的距离;setContentMargin(10,10,10,10):表示组件和窗体之间的边距,分别是左上、右上、下边距self.setGeometry(100,300,500,400):设置窗口在屏幕上的位置,并设置窗口的大小;addWidget(label,0,Qt.AlignTop|Qt.AlignCenter):参数为(QWidget,stretch,alignment)。添加小部件时,可以设置扩展量和对齐量,使用|组合;对齐方式有:Qt.AlignLeft、Qt.AlignRight、Qt.AlignHCenter水平居中、Qt.AlignVCenter、Qt.AlignJustify水平调整间距、Qt.AlignTop、Qt.AlignButton、Qt.AlignCenteraddStretch():使一个组件向上对齐后(或左),下一个不能向下(或右)对齐。这时候需要在它们之间加入Stretch;4.2组件setFixedSize(50,50):设置一个固定大小;setMaximumHeight(80):设置最大高度,最小和宽度同法设置;setFont(QFont(“微软雅黑”,25,75)):setStyleSheet():可以设置背景背景颜色(英文代码,RGB颜色值,十六进制颜色都可以用代码),background-image背景图片,彩色字体self.button.setStyleSheet('color:rgb(52,196,243,200);border-radius:25px;border:4pxsolidrgb(52,196,243));background:#D2E9FF;')#RGB第四位表示透明度,0~255self.label.setStyleSheet('color:CornflowerBlue;background-image:url(1.jpg);border-bottom-left-radius:20px')#只设置左下边框圆角五、其他QApplication.setStyle('Fusion'):应用界面样式设置;self.setWindowFlag(QtCore.Qt.FramelessWindowHint)#隐藏边框self.setAttribute(QtCore.Qt.WA_TranslucentBackground)#设置窗口背景透明界面风格不合我意,所以隐藏边框,设置背景透明,和自定义标题栏;关于透明度:设置颜色透明度:rgb(255,255,255,200)最后一位表示颜色的透明度,0~255设置界面的透明度:self.setWindowOpacity(0.91)使用html标签美化文本,使同一个标签可以有不同的字体大小、颜色等;例如:label.setText(''+"DubDub")免费下载试用:https://support.i-search.com.cn/
