Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
P
Python-Roadshow
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
workshops
Python-Roadshow
Commits
26b1f239
Commit
26b1f239
authored
Jan 16, 2018
by
Wichit Sombat
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add sample usage to readme-lib.md in session 3
parent
94c7b22f
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
162 additions
and
3 deletions
+162
-3
readme-lib.md
Session-3/readme-lib.md
+162
-3
No files found.
Session-3/readme-lib.md
View file @
26b1f239
...
@@ -26,8 +26,167 @@ cd ubuscribble/
...
@@ -26,8 +26,167 @@ cd ubuscribble/
python3 setup.py
install
--user
python3 setup.py
install
--user
```
```
5.
run
5.
usage
```
sh
```
python
BenApp
#!/usr/bin/python3
from
PyQt5.QtWidgets
import
QAction
,
QMenu
,
QMainWindow
,
QApplication
,
QMessageBox
,
QFileDialog
,
QInputDialog
from
PyQt5.QtGui
import
QImage
,
QImageWriter
from
PyQt5.QtCore
import
QDir
from
ubuscribble.scribble
import
Scribble
class
MainWindow
(
QMainWindow
):
def
__init__
(
self
):
super
(
MainWindow
,
self
)
.
__init__
()
self
.
saveAsActs
=
[]
self
.
scribble
=
Scribble
()
self
.
setCentralWidget
(
self
.
scribble
)
self
.
createActions
()
self
.
createMenus
()
self
.
setWindowTitle
(
"Scribble"
)
self
.
resize
(
500
,
500
)
def
closeEvent
(
self
,
event
):
if
self
.
maybeSave
():
event
.
accept
()
else
:
event
.
ignore
()
def
open
(
self
):
if
self
.
maybeSave
():
fileName
,
_
=
QFileDialog
.
getOpenFileName
(
self
,
"Open File"
,
QDir
.
currentPath
())
if
fileName
:
self
.
scribble
.
openImage
(
fileName
)
def
save
(
self
):
action
=
self
.
sender
()
fileFormat
=
action
.
data
()
self
.
saveFile
(
fileFormat
)
def
penColor
(
self
):
newColor
=
QColorDialog
.
getColor
(
self
.
scribble
.
penColor
())
if
newColor
.
isValid
():
self
.
scribble
.
setPenColor
(
newColor
)
def
penWidth
(
self
):
newWidth
,
ok
=
QInputDialog
.
getInt
(
self
,
"Scribble"
,
"Select pen width:"
,
self
.
scribble
.
penWidth
(),
1
,
50
,
1
)
if
ok
:
self
.
scribble
.
setPenWidth
(
newWidth
)
def
about
(
self
):
QMessageBox
.
about
(
self
,
"About Scribble"
,
"<p>The <b>Scribble</b> example shows how to use "
"QMainWindow as the base widget for an application, and how "
"to reimplement some of QWidget's event handlers to receive "
"the events generated for the application's widgets:</p>"
"<p> We reimplement the mouse event handlers to facilitate "
"drawing, the paint event handler to update the application "
"and the resize event handler to optimize the application's "
"appearance. In addition we reimplement the close event "
"handler to intercept the close events before terminating "
"the application.</p>"
"<p> The example also demonstrates how to use QPainter to "
"draw an image in real time, as well as to repaint "
"widgets.</p>"
)
def
createActions
(
self
):
self
.
openAct
=
QAction
(
"&Open..."
,
self
,
shortcut
=
"Ctrl+O"
,
triggered
=
self
.
open
)
for
format
in
QImageWriter
.
supportedImageFormats
():
format
=
str
(
format
)
text
=
format
.
upper
()
+
"..."
action
=
QAction
(
text
,
self
,
triggered
=
self
.
save
)
action
.
setData
(
format
)
self
.
saveAsActs
.
append
(
action
)
self
.
printAct
=
QAction
(
"&Print..."
,
self
,
triggered
=
self
.
scribble
.
print_
)
self
.
exitAct
=
QAction
(
"E&xit"
,
self
,
shortcut
=
"Ctrl+Q"
,
triggered
=
self
.
close
)
self
.
penColorAct
=
QAction
(
"&Pen Color..."
,
self
,
triggered
=
self
.
penColor
)
self
.
penWidthAct
=
QAction
(
"Pen &Width..."
,
self
,
triggered
=
self
.
penWidth
)
self
.
clearScreenAct
=
QAction
(
"&Clear Screen"
,
self
,
shortcut
=
"Ctrl+L"
,
triggered
=
self
.
scribble
.
clearImage
)
self
.
aboutAct
=
QAction
(
"&About"
,
self
,
triggered
=
self
.
about
)
self
.
aboutQtAct
=
QAction
(
"About &Qt"
,
self
,
triggered
=
QApplication
.
instance
()
.
aboutQt
)
def
createMenus
(
self
):
self
.
saveAsMenu
=
QMenu
(
"&Save As"
,
self
)
for
action
in
self
.
saveAsActs
:
self
.
saveAsMenu
.
addAction
(
action
)
fileMenu
=
QMenu
(
"&File"
,
self
)
fileMenu
.
addAction
(
self
.
openAct
)
fileMenu
.
addMenu
(
self
.
saveAsMenu
)
fileMenu
.
addAction
(
self
.
printAct
)
fileMenu
.
addSeparator
()
fileMenu
.
addAction
(
self
.
exitAct
)
optionMenu
=
QMenu
(
"&Options"
,
self
)
optionMenu
.
addAction
(
self
.
penColorAct
)
optionMenu
.
addAction
(
self
.
penWidthAct
)
optionMenu
.
addSeparator
()
optionMenu
.
addAction
(
self
.
clearScreenAct
)
helpMenu
=
QMenu
(
"&Help"
,
self
)
helpMenu
.
addAction
(
self
.
aboutAct
)
helpMenu
.
addAction
(
self
.
aboutQtAct
)
self
.
menuBar
()
.
addMenu
(
fileMenu
)
self
.
menuBar
()
.
addMenu
(
optionMenu
)
self
.
menuBar
()
.
addMenu
(
helpMenu
)
def
maybeSave
(
self
):
if
self
.
scribble
.
isModified
():
ret
=
QMessageBox
.
warning
(
self
,
"Scribble"
,
"The image has been modified.
\n
"
"Do you want to save your changes?"
,
QMessageBox
.
Save
|
QMessageBox
.
Discard
|
QMessageBox
.
Cancel
)
if
ret
==
QMessageBox
.
Save
:
return
self
.
saveFile
(
'png'
)
elif
ret
==
QMessageBox
.
Cancel
:
return
False
return
True
def
saveFile
(
self
,
fileFormat
):
initialPath
=
QDir
.
currentPath
()
+
'/untitled.'
+
fileFormat
fileName
,
_
=
QFileDialog
.
getSaveFileName
(
self
,
"Save As"
,
initialPath
,
"
%
s Files (*.
%
s);;All Files (*)"
%
(
fileFormat
.
upper
(),
fileFormat
))
if
fileName
:
return
self
.
scribble
.
saveImage
(
fileName
,
fileFormat
)
return
False
if
__name__
==
'__main__'
:
import
sys
app
=
QApplication
(
sys
.
argv
)
window
=
MainWindow
()
window
.
show
()
sys
.
exit
(
app
.
exec_
())
```
```
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment