Pyqt toss diary
前言
折腾了一个晚上的pyqt,突然发现好几把复杂。先做个记录防止忘记
pyqt笔记第一篇
安装过程:
pip install SIP
pip install PyQt5
pip install wheel
下载QTCreator:Index of /official_releases/qtcreator
下载Pyqt5:PyQt - Browse /PyQt5 at SourceForge.net
pycharm配置ui转py的第三方工具
Name填:工具名称
Description填:工具说明
Program填:python路径
Arguments:填:-m PyQt5.uic.pyuic $FileName$ -o $FileNameWithoutExtension$.py
Working directory填:存放UI的目录
ui转py
配置好后右键pyuic即可转换
窗口设置
import sys
from PyQt5.QtWidgets import QWidget,QApplication
class Demo(QWidget):
def __init__(self):
super().__init__()
self.intui()
def intui(self):
self.resize(350,250) #设置宽度和高度
self.move(300,500) #设置屏幕出现的位置
self.setWindowTitle("我应该去死") #设置标题
self.show() #显示窗体
if __name__ == '__main__':
app=QApplication(sys.argv)
obj=Demo()
sys.exit(app.exec_())
使用setGemoetry()函数来代替resize()和move的,是resize和move的集合体
import sys
from PyQt5.QtWidgets import QWidget,QApplication
class Demo(QWidget):
def __init__(self):
super().__init__()
self.intui()
def intui(self):
self.setGeometry(300,300,300,300)
self.setWindowTitle("我应该去死")
self.show()
if __name__ == '__main__':
app=QApplication(sys.argv)
obj=Demo()
sys.exit(app.exec_())
提示框和按钮
import sys
from PyQt5.QtWidgets import QWidget,QApplication,QPushButton,QToolTip
from PyQt5.QtGui import QFont
from PyQt5.QtCore import QCoreApplication
class Demo(QWidget):
def __init__(self):
super().__init__()
self.intui()
def intui(self):
QToolTip.setFont(QFont('SansSerif',10)) #设置字体和大小
btn=QPushButton("提交",self) #设置按钮名称和出现在那个窗口
btn.resize(btn.sizeHint()) #设置窗口大小,btn.sizeHint()为默认大小
btn.setToolTip("你是想<b>拔刀</b>吗?") #按钮提示框
btn.move(102,102) #按钮出现的位置
self.setGeometry(300,300,300,300) #设置窗体出现的位置和高度宽度
self.setWindowTitle("源氏")
self.show() #窗体出现
self.setToolTip("有何贵干老铁?") #窗体提示框
if __name__ == '__main__':
app=QApplication(sys.argv)
obj=Demo()
sys.exit(app.exec_())
注意:按钮不能放在show()下面,因为窗体出现后就不会在加载任何东西了
按钮事件
也就是说在点击按钮后会执行对应的事件
import sys
from PyQt5.QtWidgets import QWidget,QApplication,QPushButton,QToolTip
from PyQt5.QtGui import QFont
from PyQt5.QtCore import QCoreApplication
class Demo(QWidget):
def __init__(self):
super().__init__()
self.intui()
def intui(self):
QToolTip.setFont(QFont('SansSerif',10))
btn=QPushButton("提交",self)
btn.clicked.connect(QCoreApplication.instance().quit) #点击按钮后会退出,QCoreApplication.instance().quit是退出所有程序的事件
btn.resize(btn.sizeHint())
btn.setToolTip("你是想<b>拔刀</b>吗?")
btn.move(102,102)
self.setGeometry(300,300,300,300)
self.setWindowTitle("源氏")
self.show()
self.setToolTip("有何贵干老铁?")
if __name__ == '__main__':
app=QApplication(sys.argv)
obj=Demo()
sys.exit(app.exec_())
关闭窗口
import sys
from PyQt5.QtWidgets import QWidget,QApplication,QPushButton,QToolTip,QMessageBox
from PyQt5.QtGui import QFont
from PyQt5.QtCore import QCoreApplication
class Demo(QWidget):
def __init__(self):
super().__init__()
self.intui()
def intui(self):
QToolTip.setFont(QFont('SansSerif',10))
btn=QPushButton("提交",self)
btn.clicked.connect(QCoreApplication.instance().quit)
btn.resize(btn.sizeHint())
btn.setToolTip("你是想<b>拔刀</b>吗?")
btn.move(102,102)
self.setGeometry(300,300,300,300)
self.setWindowTitle("源氏")
self.show()
self.setToolTip("有何贵干老铁?")
def closeEvent(self, event): #重新定义了closeEvent(),改变控件的默认行为,就是替换掉默认的事件处理。
reply=QMessageBox.question(self,'退出','你真的要退出吗?',QMessageBox.Yes| QMessageBox.No,QMessageBox.No) #退出选择,第一个是退出框的标题,第二个退出框的说明,第三个是按钮,第四个也是按钮,第五个是默认按钮
if reply==QMessageBox.Yes: #如果选择YES就退出
event.accept()
else:
event.ignore()
if __name__ == '__main__':
app=QApplication(sys.argv)
obj=Demo()
sys.exit(app.exec_())
居中对齐
import sys
from PyQt5.QtWidgets import QWidget,QApplication,QPushButton,QToolTip,QMessageBox,QDesktopWidget
from PyQt5.QtGui import QFont
from PyQt5.QtCore import QCoreApplication
class Demo(QWidget):
def __init__(self):
super().__init__()
self.intui()
def intui(self):
QToolTip.setFont(QFont('SansSerif',10))
btn=QPushButton("提交",self)
btn.clicked.connect(QCoreApplication.instance().quit)
btn.resize(btn.sizeHint())
btn.setToolTip("你是想<b>拔刀</b>吗?")
qr = self.frameGeometry() #获取桌面分辨率
cp = QDesktopWidget().availableGeometry().center() #获取中心位置
qr.moveCenter(cp) #获取窗口中心位置
self.resize(300,250)
self.move(qr.topLeft()) #移动到中心
self.setWindowTitle("源氏")
self.show()
self.setToolTip("有何贵干老铁?")
def closeEvent(self, event):
reply=QMessageBox.question(self,'退出','你真的要退出吗?',QMessageBox.Yes| QMessageBox.No,QMessageBox.No)
if reply==QMessageBox.Yes:
event.accept()
else:
event.ignore()
if __name__ == '__main__':
app=QApplication(sys.argv)
obj=Demo()
sys.exit(app.exec_())
给窗体设置logo
这里我就用这张图
import sys
from PyQt5.QtWidgets import QWidget,QApplication,QPushButton,QToolTip,QMessageBox,QDesktopWidget
from PyQt5.QtGui import QFont,QIcon
from PyQt5.QtCore import QCoreApplication
class Demo(QWidget):
def __init__(self):
super().__init__()
self.intui()
def intui(self):
self.setWindowIcon(QIcon('1.jpg')) # w.setWindowIcon(QIcon('图片名称')) #设置logo
QToolTip.setFont(QFont('SansSerif',10))
btn=QPushButton("提交",self)
btn.clicked.connect(QCoreApplication.instance().quit)
btn.resize(btn.sizeHint())
btn.setToolTip("你是想<b>拔刀</b>吗?")
qr = self.frameGeometry()
cp = QDesktopWidget().availableGeometry().center()
qr.moveCenter(cp)
self.resize(300,250)
self.move(qr.topLeft())
self.setWindowTitle("源氏")
self.show()
self.setToolTip("有何贵干老铁?")
def closeEvent(self, event):
reply=QMessageBox.question(self,'退出','你真的要退出吗?',QMessageBox.Yes| QMessageBox.No,QMessageBox.No)
if reply==QMessageBox.Yes:
event.accept()
else:
event.ignore()
if __name__ == '__main__':
app=QApplication(sys.argv)
obj=Demo()
sys.exit(app.exec_())
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。
文章标题:Pyqt toss diary
本文作者:九世
发布时间:2019-01-24, 10:28:24
最后更新:2019-04-19, 20:36:16
原始链接:http://jiushill.github.io/posts/8131316.html版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。