from PyQt5 import QtCore, QtGui, QtWidgets
from Ui_apaki_crypto import Ui_Apaki
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
widget = QtWidgets.QWidget(None)
Ui_Apaki().setupUi(widget)
widget.show()
sys.exit(app.exec_())
pass
"""
# 方式1
import sys
from PyQt5.QtWidgets import QApplication,QWidget
if __name__ == '__main__':
# 必须创建应用对象
app = QApplication(sys.argv)
# QWidget是PyQt5所有界面类的基础类
w = QWidget()
w.setWindowTitle('QWidget')
w.resize(400, 300)
w.show()
sys.exit(app.exec_())
"""
import sys
from PyQt5.QtWidgets import (QApplication, QWidget, QToolTip, QPushButton,
QMessageBox, QDesktopWidget, QFrame)
from PyQt5.QtGui import QIcon, QFont, QColor
from PyQt5.QtCore import QCoreApplication, qrand, qsrand, QTime
class Windows(QWidget):
def __init__(self):
super().__init__()
self.initUI()
time = QTime(0, 0, 0).secsTo(QTime.currentTime())
qsrand(time)
def initUI(self):
self.setWindowTitle('Apaki示例')
self.setWindowIcon(QIcon('./res/apaki.ico'))
self.setGeometry(400, 300, 400, 300)
QToolTip.setFont(QFont('宋体', 10))
self.setToolTip('Apaki界面示例')
exitBt = QPushButton('退出', self)
exitBt.setFont(QFont('华文行楷', 12))
exitBt.setToolTip('按下按键,退出程序')
exitBt.resize(exitBt.sizeHint())
exitBt.move(300, 250)
exitBt.clicked.connect(QCoreApplication.instance().quit)
self.font = QFont('华文行楷', 12)
confirmBt = QPushButton("确认", self)
confirmBt.setFont(self.font)
confirmBt.setToolTip('按下随机,弹起黑色')
confirmBt.move(300, 200)
confirmBt.setCheckable(True)
confirmBt.clicked[bool].connect(self.confirmBtEvent)
aboutBt = QPushButton("关于", self)
aboutBt.setFont(self.font)
aboutBt.setToolTip('显示程序相关信息')
aboutBt.move(300, 150)
aboutBt.clicked.connect(self.aboutEvent)
self.color = QColor(0, 0, 0)
self.frame = QFrame(self)
self.frame.setGeometry(30, 30, 200, 200)
self.frame.setStyleSheet("QWidget { background-color: %s }" %
self.color.name())
def aboutEvent(self, event):
QMessageBox.about(self, '关于',
'时间:2018.11.15\n作者:jianfeng\n'
'版本:v1.0.00')
def center(self):
"""
将窗口放置在屏幕正中央的一种方式
"""
qr = self.frameGeometry()
cp = QDesktopWidget().availableGeometry().center()
qr.moveCenter(cp)
self.move(qr.topLeft())
def closeEvent(self, event):
"""
通过窗口右上角进行关闭时
"""
reply = QMessageBox.question(self, '退出程序',
'请确认是否退出?',
QMessageBox.Yes | QMessageBox.No,
QMessageBox.Yes)
if reply == QMessageBox.Yes:
event.accept()
else:
event.ignore()
def confirmBtEvent(self, pressed):
if not pressed:
value = 0
self.color.setRgb(value, value, value)
else:
r = qrand() % 256
g = qrand() % 256
b = qrand() % 256
self.color.setRgb(r, g, b)
self.frame.setStyleSheet("QWidget { background-color: %s }" %
self.color.name())
if __name__ == "__main__":
app = QApplication(sys.argv)
w = Windows()
w.show()
sys.exit(app.exec_())
import sys
from PyQt5.QtWidgets import (QApplication, QWidget, QFrame, QGridLayout,
QProgressBar, QPushButton, QCalendarWidget,
QLabel)
from PyQt5.QtGui import QIcon, QFont, QColor
from PyQt5.QtCore import Qt, QBasicTimer, QDate
"""
进度条的应用
感谢:Archi - 高手成长之路
参考来源:https://www.cnblogs.com/archisama/p/5465104.html
"""
class Windows(QWidget):
def __init__(self):
super().__init__()
self.initUI()
self.finished = False
def initUI(self):
self.setWindowTitle('进度条示例')
self.setWindowIcon(QIcon('./res/apaki.ico'))
self.setGeometry(400, 300, 400, 300)
self.pbar = QProgressBar(self)
self.btn = QPushButton("开始下载", self)
self.btn.clicked.connect(self.doAction)
self.timer = QBasicTimer()
self.step = 0
cal = QCalendarWidget(self)
cal.clicked[QDate].connect(self.showData)
date = cal.selectedDate()
self.label = QLabel(self)
self.label.setText(date.toString())
grid = QGridLayout(self)
grid.addWidget(self.pbar, 0, 1)
grid.addWidget(self.btn, 0, 0)
grid.addWidget(self.label, 2, 0, 1, 2)
grid.addWidget(cal, 3, 0, 1, 2)
self.setLayout(grid)
def timerEvent(self, event):
if self.step >= 100:
self.timer.stop()
self.btn.setText('下载完成')
self.finished = True
return
self.step += 1
self.pbar.setValue(self.step)
def doAction(self):
if self.finished is not True:
if self.timer.isActive():
self.timer.stop()
self.btn.setText('继续')
else:
self.timer.start(100, self)
self.btn.setText('停止')
def showData(self, date):
self.label.setText(date.toString())
if __name__ == "__main__":
app = QApplication(sys.argv)
w = Windows()
w.show()
sys.exit(app.exec_())
import os
import sys
from PyQt5.QtWidgets import (QApplication, QWidget, QPushButton, QFileDialog,
QVBoxLayout, QHBoxLayout, QLineEdit, QLabel)
from PyQt5.QtGui import QIcon, QPixmap
from PyQt5.QtCore import Qt
"""
进度条的应用
感谢:Archi - 高手成长之路
参考来源:https://www.cnblogs.com/archisama/p/5465104.html
"""
class Windows(QWidget):
def __init__(self):
super().__init__()
self.initUI()
self.finished = False
def initUI(self):
self.setWindowTitle('图像显示示例')
self.setWindowIcon(QIcon('./res/apaki.ico'))
self.setGeometry(400, 300, 400, 300)
self.fileBtn = QPushButton('打开图像', self)
self.fileBtn.clicked.connect(self.showfileDialog)
self.lineEidt = QLineEdit(self)
self.label = QLabel(self)
hbox = QHBoxLayout()
hbox.addWidget(self.fileBtn)
hbox.addWidget(self.lineEidt)
vbox = QVBoxLayout()
vbox.addItem(hbox)
vbox.addWidget(self.label)
self.setLayout(vbox)
def showfileDialog(self):
imagefname = QFileDialog.getOpenFileName(self,
'选择文件',
'./',
filter='图像 (*.jpg *.png *.bmp)')
file_path = imagefname[0]
self.lineEidt.setText(file_path)
pixmap = QPixmap(file_path)
self.label.setPixmap(pixmap)
def keyPressEvent(self, event):
if event.key() == Qt.Key_Return:
file_path = self.lineEidt.text()
if os.path.exists(file_path):
pixmap = QPixmap(file_path)
self.label.setPixmap(pixmap)
else:
self.label.setText('文件不存在')
if __name__ == "__main__":
app = QApplication(sys.argv)
w = Windows()
w.show()
sys.exit(app.exec_())
import sys
from PyQt5.QtWidgets import (QMainWindow, QApplication, QAction, qApp,
QTextEdit)
from PyQt5.QtGui import QIcon
icon_exit = './images/exit.png'
class Windows(QMainWindow):
def __init__(self):
super().__init__()
self.statusBar().showMessage('欢迎来到英雄联盟...(^.^)')
self.initUI()
def initUI(self):
self.setWindowTitle('Apaki示例')
self.setWindowIcon(QIcon('./res/apaki.ico'))
self.setGeometry(400, 300, 800, 600)
exitAction = QAction(QIcon(icon_exit), '&退出', self)
exitAction.setShortcut('Ctrl+Q')
exitAction.setStatusTip('退出程序')
exitAction.triggered.connect(qApp.quit)
menubar = self.menuBar()
menubar.setStatusTip('菜单栏')
fileMenu = menubar.addMenu('&文件')
fileMenu.addAction(exitAction)
toolbar = self.addToolBar('Exit')
toolbar.setStatusTip('工具栏')
toolbar.setWindowIcon(QIcon(icon_exit))
toolbar.addAction(exitAction)
textEdit = QTextEdit()
textEdit.setStatusTip('文本框')
self.setCentralWidget(textEdit)
if __name__ == "__main__":
app = QApplication(sys.argv)
w = Windows()
w.show()
sys.exit(app.exec_())
import sys
from PyQt5.QtWidgets import (QApplication, QWidget, QToolTip, QPushButton,
QMessageBox, QDesktopWidget, QVBoxLayout,
QHBoxLayout)
from PyQt5.QtGui import QIcon, QFont
from PyQt5.QtCore import QCoreApplication
"""
箱布局
"""
class Windows(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setWindowTitle('Apaki示例')
self.setWindowIcon(QIcon('./res/apaki.ico'))
self.setGeometry(400, 300, 400, 300)
font = QFont('华文行楷', 12)
QToolTip.setFont(QFont('楷体', 10))
self.setToolTip('Apaki界面示例')
exitBt = QPushButton('退出', self)
exitBt.setFont(font)
exitBt.setToolTip('按下按键,退出程序')
exitBt.resize(exitBt.sizeHint())
exitBt.clicked.connect(QCoreApplication.instance().quit)
confirmBt = QPushButton("确认", self)
confirmBt.setFont(font)
confirmBt.setToolTip('按下按键,暂时无效')
aboutBt = QPushButton("关于", self)
aboutBt.setFont(font)
aboutBt.setToolTip('显示程序相关信息')
aboutBt.clicked.connect(self.aboutEvent)
hbox = QHBoxLayout()
hbox.addStretch(9)
hbox.addWidget(aboutBt)
hbox.addWidget(confirmBt)
hbox.addWidget(exitBt)
hbox.addStretch(1)
vbox = QVBoxLayout()
vbox.addStretch(1)
vbox.addItem(hbox)
self.setLayout(vbox)
def aboutEvent(self, event):
QMessageBox.about(self, '关于',
'时间:2018.11.15\n作者:jianfeng\n'
'版本:v1.0.00')
if __name__ == "__main__":
app = QApplication(sys.argv)
w = Windows()
w.show()
sys.exit(app.exec_())
import sys
from PyQt5.QtWidgets import (QApplication, QWidget, QGridLayout, QPushButton,
QLineEdit)
from PyQt5.QtGui import QIcon
from PyQt5.QtCore import Qt
"""
网络布局
"""
class Windows(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setWindowTitle('Apaki计算器框架')
self.setWindowIcon(QIcon('./res/apaki.ico'))
self.setGeometry(400, 300, 400, 300)
grid = QGridLayout()
self.setLayout(grid)
LineEdit = QLineEdit(self)
LineEdit.setAlignment(Qt.AlignRight)
grid.setSpacing(10)
grid.addWidget(LineEdit, 0, 0, 1, 4)
names = ['C', 'DEL', '', '=',
'7', '8', '9', '/',
'4', '5', '6', '*',
'1', '2', '3', '-',
'±', '0', '.', '+']
positions = [(i, j) for i in range(1, 6) for j in range(4)]
for position, name in zip(positions, names):
if name == '':
continue
button = QPushButton(name)
grid.addWidget(button, *position)
if __name__ == "__main__":
app = QApplication(sys.argv)
w = Windows()
w.show()
sys.exit(app.exec_())
import sys
from PyQt5.QtWidgets import (QApplication, QWidget, QLCDNumber,
QSlider, QVBoxLayout, QHBoxLayout,
QPushButton)
from PyQt5.QtGui import QIcon
from PyQt5.QtCore import Qt, QObject, pyqtSignal
"""
信号
"""
class Communicate(QObject):
"""
创建一个新的信号叫做closeApp
信号使用了pyqtSignal()方法创建,并且成为外部类Communicate类的属性。
"""
closeApp = pyqtSignal()
class Windows(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setWindowTitle('Apaki 显示进度')
self.setWindowIcon(QIcon('./res/apaki.ico'))
self.setGeometry(400, 300, 300, 200)
lcd = QLCDNumber(self)
lcd.setDigitCount(3)
self.max_num = 255
self.slider = QSlider(Qt.Horizontal, self)
self.slider.setMaximum(self.max_num)
maxBt = QPushButton('最大值', self)
minBt = QPushButton("最小值", self)
maxBt.clicked.connect(self.buttonClicked)
minBt.clicked.connect(self.buttonClicked)
hbox = QHBoxLayout()
hbox.addWidget(minBt)
hbox.addWidget(maxBt)
vbox = QVBoxLayout()
vbox.addWidget(lcd)
vbox.addWidget(self.slider)
vbox.addLayout(hbox)
self.setLayout(vbox)
self.slider.valueChanged.connect(lcd.display)
self.custom = Communicate()
self.custom.closeApp.connect(self.close)
def keyPressEvent(self, event):
"""
重写事件函数
"""
if event.key() == Qt.Key_Escape:
self.close()
def buttonClicked(self):
"""
事件发送者
"""
sender = self.sender()
if sender.text() == '最大值':
self.slider.setValue(self.max_num)
elif sender.text() == '最小值':
self.slider.setValue(0)
else:
pass
def mousePressEvent(self, event):
"""
触发鼠标点击事件时,自定义信号closeApp会被发射
现在在窗口非点击组件上单击一下,则会退出
"""
self.custom.closeApp.emit()
if __name__ == "__main__":
app = QApplication(sys.argv)
w = Windows()
w.show()
sys.exit(app.exec_())
import sys
from PyQt5.QtWidgets import (QApplication, QWidget, QPushButton, QInputDialog,
QLineEdit, QGridLayout,
QColorDialog, QFrame, QFontDialog, QFileDialog,
QTextEdit, QCheckBox, QComboBox, QLabel)
from PyQt5.QtGui import QIcon, QFont, QColor
from PyQt5.QtCore import QCoreApplication, Qt
class Windows(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setWindowTitle('Apaki示例')
self.setWindowIcon(QIcon('./res/apaki.ico'))
self.setGeometry(400, 300, 400, 300)
self.DialogBtn = QPushButton('输入对话框', self)
self.DialogBtn.clicked.connect(self.showDialog)
self.lineEdit = QLineEdit(self)
self.lineEdit.setAlignment(Qt.AlignRight)
self.colorBtn = QPushButton('颜色对话框', self)
self.colorBtn.clicked.connect(self.showcolorDialog)
color = QColor(0, 0, 0)
self.frm = QFrame(self)
self.frm.setStyleSheet(
'QWidget { background-color: %s}' % color.name())
self.fontBtn = QPushButton('字体对话框', self)
self.fontBtn.clicked.connect(self.showfontDialog)
self.fileBtn = QPushButton('文件对话框', self)
self.fileBtn.clicked.connect(self.showfileDialog)
self.textEdit = QTextEdit(self)
checkbox = QCheckBox('切换标题', self)
checkbox.stateChanged.connect(self.changeTitle)
combo = QComboBox(self)
cars = ['雷克萨斯', '宝马', '梅赛德斯', '宾利', '保时捷', '玛莎拉蒂', '兰博基尼', '法拉利',
'凯迪拉克', '别克', '劳斯莱斯', '大众', '奥迪', '名爵', '铃木', '本田', '现代',
'丰田', '欧宝', '悍马', '吉普', '布加迪', '红旗', '五菱', '双环', '水星',
'福特', '通用', '吉利', '雪佛兰', '斯巴鲁', '捷豹', '道奇', '日产', '马自达',
'雪铁龙', '英菲尼迪', '全球鹰', '林肯']
cars.sort()
for car in cars:
combo.addItem(car)
combo.activated[str].connect(self.onActived)
self.label = QLabel(self)
self.label.setText(combo.itemText(0))
self.label.setFont(QFont('华文行楷', 14))
grid = QGridLayout()
self.setLayout(grid)
grid.addWidget(self.DialogBtn, 0, 0)
grid.addWidget(self.lineEdit, 0, 1)
grid.addWidget(self.colorBtn, 1, 0)
grid.addWidget(self.frm, 1, 1)
grid.addWidget(self.fontBtn, 2, 0)
grid.addWidget(self.fileBtn, 3, 0)
grid.addWidget(self.textEdit, 3, 1, 10, 1)
grid.addWidget(checkbox, 5, 0)
grid.addWidget(combo, 7, 0)
grid.addWidget(self.label, 10, 0)
def showDialog(self):
text, ok = QInputDialog.getText(self, '对话框', '请输入你的名字')
if ok:
self.lineEdit.setText(str(text))
def showcolorDialog(self):
color = QColorDialog.getColor()
if color.isValid():
self.frm.setStyleSheet(
'QWidget { background-color: %s}' % color.name())
def showfontDialog(self):
font, ok = QFontDialog.getFont()
if ok:
self.lineEdit.setFont(font)
self.textEdit.setFont(font)
def showfileDialog(self):
fname = QFileDialog.getOpenFileName(
self, '打开文件', filter='Markdown(*.md);;Text(*.txt);;All(*.*)')
if fname[0]:
f = open(fname[0], 'r', encoding='utf-8')
with f:
data = f.read()
self.textEdit.setText(data)
def changeTitle(self, status):
if status == Qt.Checked:
self.setWindowTitle('复选框选中')
else:
self.setWindowTitle('Apaki示例')
def onActived(self, text):
self.label.setText(text)
self.label.adjustSize()
if __name__ == "__main__":
app = QApplication(sys.argv)
w = Windows()
w.show()
sys.exit(app.exec_())