Button样式
选择Button,在styleSheet样式里设置相关属性
#注释
QPushButton { # 这是按钮原本的原色
background-color: rgb(194, 80, 28);
font: 16pt "楷体";
border-radius:12px; # 这是边框加了弧度
}
QPushButton:hover { #当鼠标靠近按钮时设置颜色
background-color: rgb(85, 255, 127);
border-radius:12px
}
QPushButton:pressed { # 当鼠标点击后又设置一种颜色
background-color:rgb(255, 0, 0);
border-radius:12px
}
效果如下:
可能是由于录屏的原因,鼠标靠近按钮时,并未变色,实际没有录屏时,鼠标靠近是变绿色的。
给按钮设置监听
要先从控件编辑模式(Edit Widget) 点进监听模式(Edit sign/slot) 当中,然后拖拽按钮的信号至Form中,就可以创建connet链接了。 注意:在添加 button_test()监听函数后,返回上级菜单后,一定要再选中一下后点击’OK’。
UI 和 qrc都生成为python文件
为何避免每次用ui生成py文件时,不小心被覆盖,建议每次生成的python文件拖出至上级目录中,这样避免覆盖。另外,资源qrc也要通过pyrcc转为python文件,否则会找不到相应模块。
创建Live测试模板
在Live模板中,设置 $TITLE$ 可以指定光标定位的位置,将下面代码创建名为“qt”的模板。
注意: define 要记得选择 python后,点击确定。
from PyQt5.Qt import *
# 创建Window_child类,继承控件QWidge为父类
class Window_child(QWidget):
def __init__(self):
super().__init__()
self.setupui() # 自定义函数
def setupui(self):
pass
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
window = Window_child()
# ------- 控件内容 ------ 开始
# ------- 控件内容 ------ 结束
window.show()
sys.exit(app.exec_()) # 创建Qt消息循环队列,如果正常关闭,app.exex_()返回0,最终sys.exit-> code 0,表示正常退出。
Designer与Live模板关联,需要修改几处地方
- 首先要继承Ui_Form为父类,才能用相关方法,直接写到组件QWidget后面就可。
- 删掉自定义的方法,构造函数里引用Ui_Form的setupUi(self)方法,同时传入window对象。
- 要补充信号接收函数,已经链接了,但是接收函数需要自己定义相关操作:
- 注意的是:
运行时,发现背景图片没有显示,要在初始化,加上 self.setAttribute(Qt.WA_StyledBackground) 这一行,自定义控件只有设置该属性后才能正常设置背景。
对于顶层窗口,在Designer中设置的背景样式表默认是不生效的,因此需要在顶层窗口的构造函数中显性设置属性:
self.setAttribute(Qt.WA_StyledBackground, True)
整体代码如下:
from PyQt5.Qt import *
from resource_test import Ui_Form
# 创建Window_child类,继承控件QWidge为父类
class Window_child(QWidget, Ui_Form):
def __init__(self):
super().__init__()
self.setAttribute(Qt.WA_StyledBackground, True)
self.setupUi(self)
def button_test(self):
print('hell world')
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
window = Window_child()
# ------- 控件内容 ------ 开始
# ------- 控件内容 ------ 结束
window.show()
sys.exit(app.exec_()) # 创建Qt消息循环队列,如果正常关闭,app.exex_()返回0,最终sys.exit-> code 0,表示正常退出。
执行效果如下: