最近在用PYQT做GUI的开发,之前没有接触过,把自己遇到的问题记录下来,方便后续回顾,同时欢迎大家指正我的错误

问题及解决方法

1.设置窗体背景图片

1
2
3
4
5
6
#方法一 似乎会将其他控件的背景图片一起改变
MainWindow.setStyleSheet("background-image: url(E:/BaiduNetdiskDownload/back.jpg)")
#方法二
palette = QPalette()
palette.setBrush(QPalette.Background, QBrush(QPixmap("E:\\BaiduNetdiskDownload\\back.jpg")))
MainWindow.setPalette(palette)

window下直接复制路径时是,记得改为/或者双\

2.固定窗口大小
背景图片如果不够大,不设置固定大小,点击全屏后,背景图片会是拼接铺满效果。

1
MainWindow.setFixedSize(600, 383)

效果如图:无法选择全屏在这里插入图片描述

3.控件底色透明
刚开始在Qt designer中没有找到透明的选项,在转为py文件后自己加入。

1
2
self.pushButton_image.setStyleSheet("background-color: transparent;\n"
"color: rgb(236, 233, 228);")

如果需要特定颜色,可以在Qt designer中的修改控件的stylesheet->Add Color->background-color,选择Pick Screen Color,自己用光标选择。
在这里插入图片描述

4.打开图片并显示在label

1
2
3
4
5
6
7
def openimage(self, Form):
global filename
# QFileDialog就是系统对话框的那个类第一个参数是上下文,第二个参数是弹框的名字,第三个参数是开始打开的路径,第四个参数是需要的格式
filename, filetype = QFileDialog.getOpenFileName(self.pushButton, '打开图片', './img', 'Image files(*.jpg *.gif *.png)')
jpg = QtGui.QPixmap(filename).scaled(self.label_3.width(), self.label_3.height())#图片尺寸调整为label长宽
self.label_3.setPixmap(jpg)
self.label_3.setScaledContents(True) #图片自适应控件大小

要实现控件和窗体大小一起变化,窗体设置layout(qt designer中窗体右键设置)

总结

作为真小白,前期把界面和逻辑写在了一起,导致后续ui重新生成后,自己写的方法又要重新添加。自己折腾了半天,把两者分离开😓。如果有较多页面,还是界面逻辑分开吧。重新生成的文件里也只需要把信号和槽绑定起来。