赞
踩
控件位置大小获取/设定
# -*-coding:utf-8 -*- from PyQt5.Qt import * import sys class example(QWidget): def __init__(self): super().__init__() self.resize(500,500) self.test() self.show() def test(self): self.label = QLabel(self) self.label.setText('我还没有扩展') self.label.move(100, 100) self.label.setStyleSheet('background:red;') self.button = QPushButton(self) self.button.setText('增加内容') self.button.move(100, 200) self.button.clicked.connect(self.cao)#绑定槽函数 def cao(self): print('调用了槽函数') str=self.label.text()+'我扩展了' self.label.setText(str) self.label.adjustSize()#这里是resize了label的大小 if __name__=='__main__': app=QApplication(sys.argv) sin=example() '''获取''' # print(sin.x())#窗口框架x位置,相对于父的距离(或桌面) # print(sin.y()) # print(sin.pos())#x,y的组合 # print(sin.width())#控件的宽度 # print(sin.height()) # print(sin.size())#宽高的组合 # print(sin.geometry())#得到xywh组合 # print(sin.rect())#0,0,w,h的组合 # print(sin.frameSize())#外框架大小 # print(sin.frameGeometry())#外框架尺寸 #画面绘制完毕之后,尺寸获取才会完全正确,否则可能出错 '''设置''' # sin.move(100,100) # sin.resize(500,500)#改的是用户区域 # sin.setGeometry(50,50,50,50)#用户区域 # sin.adjustSize()#自适应大小/例如lable里的字越多,让label越大 # sin.setFixedSize(100,100)#设置固定尺寸/不让子控件跟着父亲变化 sys.exit(app.exec_())
九宫格布局算法
我们先来看一下九宫格布局
例如编号为3:行号:3%3=0;列号:3//3=1
这样其实我们就很容易去设置每一个控件的位置和大小了
if __name__=='__main__': app=QApplication(sys.argv) '''九宫格布局''' win=QWidget() win.resize(500,500) win_count=10 #计算控件大小 w=win.width()/3 h=win.height()/(win_count//3+1) for i in range(0,win_count): wi=QWidget(win) wi.resize(w,h) wi.setStyleSheet('background-color:cyan;border:1px solid red;')#加个边框 wi.move(i%3*w,i//3*h)#根据控件编号移动到相应位置 win.show() sys.exit(app.exec_())
效果如下:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。