设置父控件位置大小,及子控件的位置大小。涉及的控件方法,setGeometry(),move(),resize().
步骤:
-
1
导入Qt模块,导入sys模块
创建应用程序对象,及进入主循环的代码
--------------------
from PyQt5.Qt import *
import sys
app=QApplication(sys.argv)
sys.exit(app.exec_())
-
2
创建QWidget对象,作为父控件,并展示。
--------------------
app=QApplication(sys.argv)
w=QWidget()
w.setWindowTitle('父控件')
w.show()
sys.exit(app.exec_())
-
3
控件的w.setGeometry(x,y,w,h)方法设置控件位置和大小的初始值。
参数x,y是控件的左上角的横坐标和纵坐标,w,h是控件的宽和高。
坐标值和控件大小都是参照屏幕分辨率。
--------------------
app=QApplication(sys.argv)
w=QWidget()
w.setWindowTitle('父控件')
w.setGeometry(400,250,300,200)
w.show()
sys.exit(app.exec_())
-
4
控件的move(x,y)方法,可以重新定位控件的位置。
参数x,y是控件的左上角的横坐标和纵坐标。
--------------------
app=QApplication(sys.argv)
w=QWidget()
w.setWindowTitle('父控件')
w.setGeometry(0,0,300,200)
w.move(400,250)
w.show()
sys.exit(app.exec_())
-
5
控件的resize(w,h)方法,可以重置控件的大小。
参数w,h是控件的宽和高。
--------------------
app=QApplication(sys.argv)
w=QWidget()
w.setWindowTitle('父控件')
w.setGeometry(0,0,300,200)
w.move(400,250)
w.resize(400,300)
w.show()
sys.exit(app.exec_())
-
6
控件的move(x,y),resize(w,h),可以替代setGeometry(x,y,w,h)。
--------------------
app=QApplication(sys.argv)
w=QWidget()
w.setWindowTitle('父控件')
w.move(400,250)
w.resize(300,200)
w.show()
sys.exit(app.exec_())
-
7
1)子控件的位置,是相对在父控件类内的位置来说的,子控件是将父控件作为坐标系统,但是不包括标题栏,所以原点(0,0)是在标题栏下方空间的左上角。
2)如果没有给出子控件的位置,子控件在父控件的默认位置为(0,0)。
例如:添加一个QPushbutton()类按钮,作为子控件。
按钮左上角的位置就是按钮位置,如果没有设置初始位置,默认就是它父控件的(0,0)位置,就是父控件标题栏下方最坐标。
--------------------
app=QApplication(sys.argv)
w=QWidget()
w.setWindowTitle('父控件')
w.move(400,250)
w.resize(300,200)
btn=QPushButton(w)
btnName=btn.setText('测试按钮1')
w.show()
sys.exit(app.exec_())
-
8
子控件仍然可以使用setGeometry(),move(),resize()方法。只是位置是参照父控键,而非整个屏幕。
--------------------
app=QApplication(sys.argv)
w=QWidget()
w.setWindowTitle('父控件')
w.move(400,250)
w.resize(300,200)
btn=QPushButton(w)
btnName=btn.setText('测试按钮1')
btn.setGeometry(50,50,100,40)
w.show()
sys.exit(app.exec_())
-
9
添加多个子控件:同在一个父控件下的子控件,注意位置,不要重叠。
--------------------
app=QApplication(sys.argv)
w=QWidget()
w.setWindowTitle('父控件')
w.move(400,250)
w.resize(230,200
btn=QPushButton(w)
btnName=btn.setText('测试按钮1')
btn.setGeometry(10,10,100,40)
btn=QPushButton(w)
btnName=btn.setText('测试按钮1')
btn.setGeometry(120,10,100,40
lab=QLabel(w)
lab.setGeometry(10,60,210,130)
lab.setText('我自横刀向天笑,去留肝胆两昆仑。')
w.show()
sys.exit(app.exec_())
END
文章评论