PyQt5基本窗口控件-----QWidget
程序员文章站
2022-05-28 11:03:52
...
基础控件QWidget类是所有用户界面对象的基类,所有的窗口和空间都直接或间接的继承自QWidget
窗口控件(Widget,简称"控件"),是PyQt中建立界面的主要元素。
窗口坐标系统
PyQt使用统一的坐标系统来定位窗口控件的位置和大小,以屏幕的左上方角原点,向右为x轴正方向,向下为y轴正方向。
窗口内部也有自己的坐标系统,左上方角原点,向右为x轴正方向,向下为y轴正方向。x轴,y轴围成的区域叫做客户区,客户区的周围是标题栏和边框
QWidget的成员函数可以分为三类
- QWidget直接提供的成员函数:x()、y()获得窗口左上角的坐标,width(),height()获得客户区的宽度和高度;
- QWidget的geometry()提供的成员函数:x()、y()获得客户区左上角的坐标,width(),height()获得客户区的宽度和高度;
- QWidget的frameGeometry()提供的成员函数:x()、y()获得客户区左上角的坐标,width(),height()获得包含客户区、标题栏和边框在内的整个窗口的宽度和高度;
常用的几何结构
- 不包含外边各种边框的几何结构
- 包含外边各种边框的几何结构
- QWidget不包含边框的常用函数
一般情况下,不包含边框的部分叫做客户区,这部分是一个长方形,在Qt中保存这个长方形使用的是QRect类,改变它的大小位置,使用如下几个函数。
- 改变客户区面积
QWidget.resize(width, height)
QWidget.resize(QSize)
- 获得客户区大小
QWidget.size()
- 获得客户区的高度和宽度
QWidget.width()
QWidget.height()
- 设置客户区的宽度和高度
QWidget.setFixedWidth(int width) # 高度固定,只可以改变宽度
QWidget.setFixedHeight(int height) # 宽度固定,只可以改变高度
QWidget.setFixedSize(QSize size) # 固定大小,不可以通过鼠标改变
QWidget.setFixedSize(int width, int height) # 固定大小,不可以通过鼠标改变
QWidget.setGeometry(int x, int y, int width, int height)
QWidget.setGeometry(QRect rect)
- QWidget包含边框的常用函数
- 获得窗口的大小和位置
QWidget.frameGeometry()
- 设置窗口的位置
QWidget.move(int x, int y)
QWidget.move(QPoint point)
- 获得窗口左上角的坐标
QWidget.pos()
import sys
from PyQt5.QtWidgets import QMainWindow, QApplication, QDesktopWidget, QHBoxLayout, QWidget, QPushButton
def onClick_Button():
print('1、QWidget,窗口')
print("widget.x()= %d" % widget.x()) # 窗口横坐标
print("widget.y()= %d" % widget.y()) # 窗口纵坐标
print("widget.width()= %d" % widget.width()) # 工作区宽度
print("widget.height()= %d" % widget.height()) # 工作区高度
print('------------------------------------------')
print('2、gemetry,工作区')
print("widget.geometry().x()= %d" % widget.geometry().x()) # 工作区横坐标
print("widget.geometry().y()= %d" % widget.geometry().y()) # 工作区纵坐标
print("widget.geometry().width()= %d" % widget.geometry().width()) # 工作区宽度
print("widget.geometry().height()= %d" % widget.geometry().height()) # 工作区宽度
print('------------------------------------------')
print('3、frameGeometry,工作区+标题栏')
print("widget.frameGeometry().x()= %d" % widget.frameGeometry().x()) # 窗口横坐标
print("widget.frameGeometry().y()= %d" % widget.frameGeometry().y()) # 窗口纵坐标
print("widget.frameGeometry().width()= %d" % widget.frameGeometry().width()) # 窗口宽度
print("widget.frameGeometry().height()= %d" % widget.frameGeometry().height()) # 窗口高度
app = QApplication(sys.argv)
widget = QWidget()
btn = QPushButton(widget)
btn.setText("按钮")
btn.clicked.connect(onClick_Button)
btn.move(24, 52)
widget.resize(300, 244)
widget.move(250, 200)
widget.setWindowTitle('QWidget')
widget.show()
sys.exit(app.exec_())
添加图标
import sys
from PyQt5.QtWidgets import QMainWindow, QApplication, QDesktopWidget, QHBoxLayout, QWidget, QPushButton
from PyQt5.QtGui import QIcon
class IconForm(QMainWindow):
def __init__(self, parent=None):
super(IconForm, self).__init__(parent)
self.initUI()
def initUI(self):
self.setGeometry(300, 300, 250, 250)
# 设置主窗口的标题
self.setWindowTitle("主窗口应用")
# 设置窗口的尺寸
self.resize(400, 300)
# 设置窗口图标
self.setWindowIcon(QIcon('./about_us_bk.jpg'))
if __name__ == '__main__':
app = QApplication(sys.argv)
main = IconForm()
main.show()
sys.exit(app.exec_())
添加提示信息
import sys
from PyQt5.QtWidgets import QMainWindow, QApplication, QDesktopWidget, QHBoxLayout, QWidget, QPushButton, QToolTip
from PyQt5.QtGui import QFont
class TooltipForm(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
self.btn()
def initUI(self):
QToolTip.setFont(QFont('SansSerif', 12))
self.setToolTip('今天是<b>星期五</b>')
self.setGeometry(300, 300, 200, 300)
self.setWindowTitle('设置控件提示信息')
def btn(self):
self.button1 = QPushButton('我的按钮')
self.button1.setToolTip('这是一个按钮')
layout = QHBoxLayout()
layout.addWidget(self.button1)
mainFrame = QWidget()
mainFrame.setLayout(layout)
self.setCentralWidget(mainFrame)
if __name__ == '__main__':
app = QApplication(sys.argv)
main = TooltipForm()
main.show()
sys.exit(app.exec_())
上一篇: 记一次用explain优化sql过程
下一篇: 在集群中执行打包的程MapReduce序