pyqt5 类继承图
#设置主窗口的位置【以下代码都可以单独放在一个py文件中运行调试,前提是装了PyQt5】
import sys #获取参数的api
from PyQt5.QtWidgets import QDesktopWidget,QMainWindow,QApplication
from PyQt5.QtGui import QIcon
class CenterForm(QMainWindow):
def __init__(self):
super(CenterForm,self).__init__()
#设置主窗口标题
self.setWindowTitle('让窗口居中')
#设置尺寸
self.resize(400,300)
self.center()
def center(self):
#获取屏幕坐标系
screen = QDesktopWidget().screenGeometry()
#获取窗口坐标系
size= self.geometry()
x = int((screen.width()-size.width())/3)
y =int((screen.height()-size.height())/2)
self.move(x,y)
if __name__ == '__main__':
app = QApplication(sys.argv) #app实例化
app.setWindowIcon(QIcon('./images/Dragon.ico'))
main = CenterForm() #实例化主窗口
main.show() #主窗口显示
sys.exit(app.exec_()) #循环,但是app和main又是什么关系?,app感觉应该是跟进程有关的
#添加按钮绑定事件
import sys #获取参数的api
from PyQt5.QtWidgets import QDesktopWidget,QMainWindow,QApplication,QPushButton,QHBoxLayout,QWidget
from PyQt5.QtGui import QIcon
class ButtonClickMainWindow(QMainWindow):
def __init__(self):
super(ButtonClickMainWindow,self).__init__()
self.setWindowTitle('添加按钮绑定事件')
self.resize(400,300)
self.createWidgets()
def createWidgets(self):
#添加button
self.button1 = QPushButton('Quit')
#绑定信号与槽
self.button1.clicked.connect(self.onClick1_Button)
#设置布局
layout = QHBoxLayout() #这里先设置了布局
layout.addWidget(self.button1) #在布局里加了按钮 addWidget widget是小部件的意思,这里是控件
mainFrame =QWidget() #设置框架
mainFrame.setLayout(layout) #在框架里添加布局
self.setCentralWidget(mainFrame) #这句网上的解释是 设置中心窗口部件 ,还不懂
def onClick1_Button(self):
sender = self.sender()
print(sender.text()+'按钮被按下')
app= QApplication.instance() #app还可以这样实例化
app.quit()
if __name__ == '__main__':
app = QApplication(sys.argv)
main = ButtonClickMainWindow()
main.show()
sys.exit(app.exec_())
#屏幕坐标系
import sys #获取参数的api
from PyQt5.QtWidgets import QDesktopWidget,QMainWindow,QApplication,QPushButton,QHBoxLayout,QWidget
#【这里不用类演示,直接面向过程】
#定义一个按钮方法
def onclick_button():
print(1)
print('widget.x() = %d'%widget.x()) #781 主窗口横坐标
print('widget.y() = %d'%widget.y()) #195 主窗口纵坐标
print('widget.width() = %d'%widget.width()) #300 #工作区的宽度,不包含边框1个像素的宽度
print('widget.height() = %d'%widget.height()) #200 #主工作区的高度,不包括菜单栏
print(1)
print('widget.geometry().x() = %d' % widget.geometry().x()) #782 主工作区的横坐标
print('widget.geometry().y() = %d' % widget.geometry().y()) #226 #主工作区的纵坐标
print('widget.geometry().width() = %d' % widget.geometry().width()) #300 主工作区的宽度
print('widget.geometry().height() = %d' % widget.geometry().height()) #200 主工作区的高度
print(1)
print('widget.frameGeometry().x() = %d' % widget.frameGeometry().x()) #781 #主窗口的横坐标
print('widget.frameGeometry().y() = %d' % widget.frameGeometry().y()) #195 #主窗口的纵坐标
print('widget.frameGeometry().width() = %d' % widget.frameGeometry().width()) # 302 #主窗口的宽度
print('widget.frameGeometry().height() = %d' % widget.frameGeometry().height()) #232 #主窗口的高度,包括标题栏
#创建app
app = QApplication(sys.argv)
#创建主窗口
widget = QWidget()
#设置窗口标题,大小,位置
widget.setWindowTitle('屏幕坐标系')
widget.resize(300,200) #这里是设置工作区的高度是200,不包括标题栏
widget.move(100,200)
#创建子窗口(按钮)
button = QPushButton(widget)#子窗口(按钮等)要把主窗口作为参数传进来
button.setText('打印主窗口坐标') #这里不能用setWindowTitle,主窗口才能用,QPushButton等都是QWidget的子类
button.move(20,25)#这里是相对位置,相对于主窗口widget的
button.clicked.connect(onclick_button)
#启用循环
widget.show()
sys.exit(app.exec_())
#设置窗口图标
import sys
from PyQt5.QtWidgets import QWidget,QApplication,QMainWindow
from PyQt5.QtGui import QIcon
class IconMainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.initUi()
def initUi(self):
self.setGeometry(300,300,500,200)
self.setWindowTitle('设置窗口图标')
self.setWindowIcon(QIcon('favicon.ico'))
#这里的setWindowIcon 好像QApplication对象也可以调用
if __name__ == '__main__':
app = QApplication(sys.argv)
icon = IconMainWindow()
icon.show()
sys.exit(app.exec_())
# 显示空间提示信息
import sys #获取参数的api
from PyQt5.QtWidgets import QDesktopWidget,QMainWindow,QApplication,QPushButton,QHBoxLayout,QWidget,QToolTip
from PyQt5.QtGui import QFont #需要字体
class ToolTipMainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
QToolTip.setFont(QFont('SansSerif',12))
self.setToolTip('今天是<b>周日</b>') #工作区有效,菜单栏无效
self.setGeometry(400,400,400,400)
self.setWindowTitle('设置提示信息')
#还可以在按钮上增加提示信息
self.button1 = QPushButton('push me')
self.button1.setToolTip('这是一个按钮')
if __name__ == '__main__':
app = QApplication(sys.argv)
tm = ToolTipMainWindow()
tm.show()
sys.exit(app.exec_())