5 Star 0 Fork 0

Root/Detection

加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
windows.py 15.47 KB
一键复制 编辑 原始数据 按行查看 历史
Root 提交于 2022-01-27 00:22 +08:00 . 2022-1-27
#pyqt窗口文件。Example为窗口继承类
import sys
from PyQt5.QtWidgets import (QApplication,QWidget,QToolTip,QPushButton,QHBoxLayout,QVBoxLayout,QLineEdit,
QInputDialog,QSlider,QMessageBox,QDesktopWidget,QAction,qApp,QMenu,QLabel,
QFrame,QColorDialog,QSizePolicy,QFontDialog,QFileDialog,QTextEdit,QCheckBox,QProgressBar,QSplitter,QStyleFactory,
QComboBox,QListView, QMessageBox)
from PyQt5.QtGui import QIcon
from PyQt5.QtGui import QFont
from PyQt5.QtCore import QStringListModel
from PyQt5.QtCore import QCoreApplication
from PyQt5.QtWidgets import QMainWindow
from PyQt5.QtCore import Qt,QSize
from PyQt5.QtGui import QPixmap,QStandardItem,QStandardItemModel
from PyQt5.QtCore import QBasicTimer
class Example(QMainWindow):
#初始化
def __init__(self):
super().__init__()
self.initUI()
#allvlay:上下分层的全局垂直结构
#imgbox:上层水平布局
#imgright:右侧菜单栏
#toolbox:下层水平布局
#toolright:下层右侧工具栏
#toolmid:下层中间数据显示栏
#toolleft:下层左侧工具栏
def initUI(self):
#上层布局
imgbox = QHBoxLayout()
self.lbo = QLabel("")
self.lbo.setFixedSize(850,600)
self.lbo.setScaledContents(True)
self.lbo.move(250, 200)
# img_whole=QVBoxLayout()
# top=QHBoxLayout()
# bottom=QHBoxLayout()
# img_second=QFrame(self)
# img_second.setStyleSheet("border-radius:10px;border:3px solid rgb(250, 200,109)")
# img_second.setLineWidth(3)
# img_second.setFixedSize(400, 300)
#
# img_third = QFrame(self)
# img_third.setStyleSheet("border-radius:10px;border:3px solid rgb(250, 200,109)")
# img_third.setLineWidth(3)
# img_third.setFixedSize(400, 300)
#
# img_forth = QFrame(self)
# img_forth.setStyleSheet("border-radius:10px;border:3px solid rgb(250, 200,109)")
# img_forth.setLineWidth(3)
# img_forth.setFixedSize(400, 300)
#
# top.addWidget(img_second)
# top.addWidget(img_third)
# top.addWidget(img_forth)
#
# img_fifth = QFrame(self)
# img_fifth.setStyleSheet("border-radius:10px;border:3px solid rgb(250, 200,109)")
# img_fifth.setLineWidth(3)
# img_fifth.setFixedSize(400, 300)
# img_sixth = QFrame(self)
# img_sixth.setStyleSheet("border-radius:10px;border:3px solid rgb(250, 200,109)")
# img_sixth.setLineWidth(3)
# img_sixth.setFixedSize(400, 300)
# img_seventh = QFrame(self)
# img_seventh.setStyleSheet("border-radius:10px;border:3px solid rgb(250, 200,109)")
# img_seventh.setLineWidth(3)
# img_seventh.setFixedSize(400, 300)
# bottom.addWidget(img_fifth)
# bottom.addWidget(img_sixth)
# bottom.addWidget(img_seventh)
# img_whole.addLayout(top)
# img_whole.addLayout(bottom)
imgright = QFrame(self)
imgright.setFrameShape(QFrame.Panel)
imgright.setFrameShadow(QFrame.Sunken)
imgright.setLineWidth(3)
imgright.setFixedSize(400, 600)
imgbox.addSpacing(250)
# imgbox.addLayout(img_whole)
imgbox.addWidget(self.lbo)
imgbox.addSpacing(250)
imgbox.addWidget(imgright)
#下层布局
toolbox = QHBoxLayout()
toolleft = QFrame(self) #QFrame边框设置
toolleft.setFrameShape(QFrame.Panel)
toolleft.setFrameShadow(QFrame.Sunken)
toolleft.setLineWidth(3)
toolleft.setFixedSize(1000,300)
toolmid = QFrame(self)
toolmid.setFrameShape(QFrame.Panel)
toolmid.setFrameShadow(QFrame.Sunken)
toolmid.setLineWidth(3)
toolmid.setFixedSize(350, 300)
self.toolright = QFrame(self)
self.toolright.setFrameShape(QFrame.Panel)
self.toolright.setFrameShadow(QFrame.Sunken)
self.toolright.setLineWidth(3)
#将左右中三栏加入到下层布局
toolbox.addWidget(toolleft)
toolbox.addWidget(toolmid)
toolbox.addWidget(self.toolright)
#按钮
lbs=QLabel('来源',imgright)
lbs.move(20,120)
QToolTip.setFont(QFont('SansSerif', 10))
self.setToolTip('This is a <b>Detection interface</b>') #设置按钮备注
allvlay = QVBoxLayout()
self.btn = QPushButton('连续采样', imgright)
self.btn.setToolTip('This is a <b>Sampling</b> button')
self.btn.resize(self.btn.sizeHint())
self.btn.setMinimumSize(10,30)
#btn.clicked.connect(img.imgprocess.imgs)
self.btn.move(80,110)
self.btn2 = QPushButton('本地', imgright)
self.btn2.setToolTip('This is a <b>local</b> button')
self.btn2.resize(self.btn2.sizeHint())
self.btn2.setMinimumSize(10, 30)
self.btn2.move(80,160)
self.btn3 = QPushButton('last', imgright)
self.btn3.resize(self.btn3.sizeHint())
self.btn3.setMinimumSize(10, 30)
self.btn3.move(80, 210)
self.btn4 = QPushButton('next', imgright)
self.btn4.resize(self.btn4.sizeHint())
self.btn4.setMinimumSize(10, 30)
self.btn4.move(230, 210)
self.btn5 = QPushButton(imgright)
self.btn5.setIcon(QIcon(QPixmap("C:\\Users\\Lenovo\\Pictures\\book.png")))#设置图标
self.btn5.setMinimumSize(20,20)
#self.btn5.clicked.connect(self.showfile)
self.btn5.move(230, 160)
self.btn6=QPushButton('全机位图',imgright)
self.btn6.setToolTip('will show the <b>whole</b> seat')
self.btn6.resize(self.btn6.sizeHint())
self.btn6.setMinimumSize(10, 30)
self.btn6.move(250, 450)
#曝光滑动条
lbt=QLabel('曝光',imgright)
lbt.move(20,280)
slid = QSlider(Qt.Horizontal, imgright)
slid.setFocusPolicy(Qt.NoFocus)
slid.setGeometry(90, 280, 200, 20)
#slid.valueChanged[int].connect(self.changeValue) #功能连接函数
#位机按钮
self.lbr = QLabel("位机", imgright)
self.combo = QComboBox(imgright)
self.combo.addItem("一号")
self.combo.addItem("二号")
self.combo.addItem("三号")
self.combo.addItem("四号")
self.combo.addItem("五号")
self.combo.move(140, 50)
self.lbr.move(240, 50)
#combo.activated[str].connect(self.onActivated)功能联接函数
#下半位工具栏
lba = QLabel("尺寸测量", toolleft)
self.comboa = QComboBox(toolleft)
self.comboa.addItem("thickness")
self.comboa.addItem("internal_diameter")
self.comboa.addItem("external diameter")
self.comboa.move(180, 40)
lba.move(70, 40)
# combo.activated[str].connect(self.onActivated)
lbb = QLabel("可容忍度", toolleft)
self.combob = QComboBox(toolleft)
self.combob.addItem("1")
self.combob.addItem("2")
self.combob.addItem("3")
self.combob.move(180, 90)
lbb.move(70, 90)
# combob.activated[str].connect(self.onActivated)
lbc = QLabel("算法", toolleft)
self.comboc = QComboBox(toolleft)
self.comboc.addItem("tradition")
self.comboc.addItem("dplearning")
self.comboc.move(180, 140)
lbc.move(70, 140)
# comboc.activated[str].connect(self.onActivated)
lbd = QLabel("模型", toolleft)
self.combod = QComboBox(toolleft)
self.combod.addItem("classification")
self.combod.addItem("detetction")
self.combod.addItem("segmentation")
self.combod.move(180, 190)
lbd.move(70, 190)
# combod.activated[str].connect(self.onActivated)
self.begin = QPushButton('Run', toolleft)
self.begin.move(500, 80)
#self.begin.clicked.connect(self.showDialog)
#开始,暂停按钮 用于全流程连续采样检测
quterun=QPushButton(toolleft)
quterun.setIcon(QIcon(QPixmap("C:\\Users\\Lenovo\\Pictures\\begin.png")))
quterun.move(610,80)
self.stop = QPushButton('Stop', toolleft)
self.stop.move(700, 80)
# self.stop.clicked.connect(self.showDialog)
qutestop = QPushButton(toolleft)
qutestop.setIcon(QIcon(QPixmap("C:\\Users\\Lenovo\\Pictures\\stop.png")))
qutestop.move(810, 80)
self.pbar = QProgressBar(toolleft)
self.pbar.setGeometry(500, 150, 400, 30)
self.begin.clicked.connect(self.doAction)
self.timer = QBasicTimer()
self.step = 0
#中部输出的标签
outa=QLabel("外径",toolmid)
outa.move(50,40)
outb = QLabel("内径", toolmid)
outb.move(50,80)
outc = QLabel("厚度", toolmid)
outc.move(50, 120)
outd = QLabel("次品数", toolmid)
outd.move(50, 160)
oute = QLabel("缺陷面积", toolmid)
oute.move(50, 200)
self.ola = QLineEdit(toolmid)
self.ola.move(125, 38)
self.olb = QLineEdit(toolmid)
self.olb.move(125, 78)
self.olc = QLineEdit(toolmid)
self.olc.move(125, 118)
self.old = QLineEdit(toolmid)
self.old.move(125, 158)
self.ole = QLineEdit(toolmid)
self.ole.move(125, 198)
textr=QLabel('记录板',self.toolright)
textr.move(155,135)
#显示打开图像数目
self.imgtext=QTextEdit(imgright)
self.imgtext.setFixedSize(100,20)
self.imgtext.move(120,400)
samnumber=QLabel('样本数目',imgright)
samnumber.move(20,400)
#可选择的图像标签栏
self.listView = QListView(self.toolright)
self.listView.setViewMode(QListView.ListMode)
self.listView.setGridSize(QSize(60,25))
self.listView.setIconSize(QSize(20, 20))
self.listView.setFixedSize(390,300)
self.listView.setResizeMode(QListView.Adjust)
self.model = QStandardItemModel()
self.listView.setModel(self.model)
#字体
# word = QPushButton('word', toolright)
# word.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)
# word.move(100, 250)
#
# word.clicked.connect(self.showword)
#QMainwindow布局总合
allvlay.addLayout(imgbox)
allvlay.addSpacing(10)
allvlay.addLayout(toolbox)
widget = QWidget()
widget.setLayout(allvlay)
self.setCentralWidget(widget)
#界面上面的菜单栏,未全部连接功能
# 菜单栏
exitAct = QAction(QIcon('C:\\Users\\Lenovo\\Pictures\\qute.jpeg'), '&Exit', self) # 图标,内容
exitAct.setShortcut('Ctrl+Q') # 快捷键
exitAct.setStatusTip('Exit application') # 状态标识
exitAct.triggered.connect(qApp.quit) # 链接动作
self.statusBar()
menubar = self.menuBar()
fileMenu = menubar.addMenu('&File')
fileMenu.addAction(exitAct)
# 子菜单
impMenu = QMenu('Dimension measurement', self)
impAct = QAction('diam', self)
impAct_t = QAction('thickness', self)
impMenu.addAction(impAct)
impMenu.addAction(impAct_t)
newAct = QAction('Dlearning', self)
fileMenu.addAction(newAct)
fileMenu.addMenu(impMenu)
# 勾选菜单
# self.statusBar=self.statusBar()
self.statusBar().showMessage('Ready')
menubar = self.menuBar()
viewMenu = menubar.addMenu('View')
viewStatAct = QAction('contrast view', self, checkable=True)
viewStatAct.setStatusTip('View statusbar')
viewStatAct.setChecked(True)
viewStatAct.triggered.connect(self.toggleMenu)
viewMenu.addAction(viewStatAct)
# 工具栏
toolAct = QAction(QIcon('C:\\Users\\Lenovo\\Pictures\\mac.png'), 'Exit', self)
toolAct.setShortcut('Ctrl+A')
toolAct.triggered.connect(qApp.quit)
self.toolbar = self.addToolBar('Exit')
self.toolbar.addAction(toolAct)
toolAct2 = QAction(QIcon('C:\\Users\\Lenovo\\Pictures\\bag.png'), 'Exit', self)
toolAct2.setShortcut('Ctrl+B')
toolAct2.triggered.connect(qApp.quit)
self.toolbar.addAction(toolAct2)
toolAct3 = QAction(QIcon('C:\\Users\\Lenovo\\Pictures\\save.png'), 'Exit', self)
toolAct3.setShortcut('Ctrl+C')
toolAct3.triggered.connect(qApp.quit)
self.toolbar.addAction(toolAct3)
toolAct4 = QAction(QIcon('C:\\Users\\Lenovo\\Pictures\\anset.png'), 'Exit', self)
toolAct4.setShortcut('Ctrl+C')
toolAct4.triggered.connect(qApp.quit)
self.toolbar.addAction(toolAct4)
#开关按钮
self.cb = QCheckBox('Show drawrect', imgright)
self.cb.move(80, 350)
self.cb.toggle()
#cb.stateChanged.connect(self.chageTitle)
#文件夹打开
# self.textEdit=QTextEdit()
# self.setCentralWidget(self.textEdit)
# self.statusBar()
openFile=QAction(QIcon('C:\\Users\\Lenovo\\Pictures'),'Open',self)
openFile.setShortcut('Ctrl+E')
openFile.setStatusTip('Open new File')
openFile.triggered.connect(self.showfile)
#flmenubar=self.menuBar()
#flMenu=flmenubar.addMenu('&File')
fileMenu.addAction(openFile)
self.setGeometry(300, 300, 300, 200)
self.setWindowTitle('O_Detetction')
# self.center()
self.setWindowIcon(QIcon('C:\\Users\\Lenovo\\Pictures\\log.png'))
self.show()
#界面关闭提醒
def closeEvent(self, event):
reply = QMessageBox.question(self, 'Message',
"Are you sure to quit?", QMessageBox.Yes |
QMessageBox.No, QMessageBox.No)
if reply == QMessageBox.Yes:
event.accept()
else:
event.ignore()
# 窗口居中
def center(self):
qr = self.frameGeometry()
cp = QDesktopWidget().availableGeometry().center()
qr.moveCenter(cp)
self.move(qr.topLeft())
def onChanged(self, text):
self.lbl.setText(text)
self.lbl.adjustSize()
def toggleMenu(self,state):
if state:
self.statusBar.show()
else:
self.statusBar.hide()
def onActivated(self, text):
self.lbr.setText(text)
self.lbr.adjustSize()
#按下开始按钮,文本框显示输出
def showDialog(self):
text, ok = QInputDialog.getText(self, 'Input Dialog', 'Enter your name:')
if ok:
self.le.setText(str(text))
#进度条链接函数
def doAction(self):
if self.timer.isActive():
self.timer.stop()
self.begin.setText('Start')
else:
self.timer.start(100,self)
self.begin.setText('Stop')
#定时器处理函数
def timerEvent(self, e):
if self.step>=100:
self.timer.stop()
self.begin.setText('Finished')
return
self.step=self.step+1
self.pbar.setValue(self.step)
#字体控制函数
# def showword(self):
# font, ok = QFontDialog.getFont()
# if ok:
# self..setFont(font)
def showfile(self):
self.fname = QFileDialog.getOpenFileName(self, 'Open file', '/home')
# self.hh=QFileDialog.getExistingDirectory(self, 'Open file', '/home')
# self.fname=QFileDialog.getOpenFileName(self.hh,'Open file', '/home')
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/ZhangRoot/detection.git
git@gitee.com:ZhangRoot/detection.git
ZhangRoot
detection
Detection
master

搜索帮助