From f72545ed0c385d31b125d2a31f69fe02956ef666 Mon Sep 17 00:00:00 2001 From: M11212051 Date: Sun, 5 May 2024 22:30:21 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8A=E5=82=B3=E6=AA=94=E6=A1=88=E5=88=B0?= =?UTF-8?q?=E3=80=8Cpyqt5/CODE/=E5=85=83=E4=BB=B6=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=E7=AF=84=E4=BE=8B=E3=80=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pyqt5/CODE/元件使用範例/qt04_QMultipleDoc.py | 49 +++++++++++++ pyqt5/CODE/元件使用範例/qt04_QPixmap.py | 25 +++++++ pyqt5/CODE/元件使用範例/qt04_QScrollBar.py | 52 ++++++++++++++ pyqt5/CODE/元件使用範例/qt04_QSplitter.py | 46 ++++++++++++ .../CODE/元件使用範例/qt04_QStackedWidget.py | 70 +++++++++++++++++++ 5 files changed, 242 insertions(+) create mode 100644 pyqt5/CODE/元件使用範例/qt04_QMultipleDoc.py create mode 100644 pyqt5/CODE/元件使用範例/qt04_QPixmap.py create mode 100644 pyqt5/CODE/元件使用範例/qt04_QScrollBar.py create mode 100644 pyqt5/CODE/元件使用範例/qt04_QSplitter.py create mode 100644 pyqt5/CODE/元件使用範例/qt04_QStackedWidget.py diff --git a/pyqt5/CODE/元件使用範例/qt04_QMultipleDoc.py b/pyqt5/CODE/元件使用範例/qt04_QMultipleDoc.py new file mode 100644 index 0000000..c240f8f --- /dev/null +++ b/pyqt5/CODE/元件使用範例/qt04_QMultipleDoc.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- + +''' + 【簡介】 + PyQt5中QMdiArea範例 + + +''' + +import sys +from PyQt5.QtCore import * +from PyQt5.QtGui import * +from PyQt5.QtWidgets import * + +class MainWindow(QMainWindow): + count=0 + def __init__(self, parent=None): + super(MainWindow, self).__init__(parent) + self.mdi = QMdiArea() + self.setCentralWidget(self.mdi) + bar=self.menuBar() + file=bar.addMenu("File") + file.addAction("New") + file.addAction("Cascade") + file.addAction("Tiled") + file.triggered[QAction].connect(self.windowaction) + self.setWindowTitle("MDI demo") + + def windowaction(self, q): + print( "triggered") + + if q.text()=="New": + MainWindow.count=MainWindow.count+1 + sub=QMdiSubWindow() + sub.setWidget(QTextEdit()) + sub.setWindowTitle("subwindow"+str(MainWindow.count)) + self.mdi.addSubWindow(sub) + sub.show() + if q.text()=="cascade": + self.mdi.cascadeSubWindows() + if q.text()=="Tiled": + self.mdi.tileSubWindows() + +if __name__ == '__main__': + app = QApplication(sys.argv) + demo = MainWindow() + demo.show() + sys.exit(app.exec_()) + diff --git a/pyqt5/CODE/元件使用範例/qt04_QPixmap.py b/pyqt5/CODE/元件使用範例/qt04_QPixmap.py new file mode 100644 index 0000000..8f9e2e7 --- /dev/null +++ b/pyqt5/CODE/元件使用範例/qt04_QPixmap.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- + +''' + 【簡介】 + PyQt5中QPixmap範例 + + +''' + +import sys +from PyQt5.QtCore import * +from PyQt5.QtGui import * +from PyQt5.QtWidgets import * + +if __name__ == '__main__': + app = QApplication(sys.argv) + win = QWidget() + lab1 = QLabel() + lab1.setPixmap(QPixmap("./images/python.jpg")) + vbox=QVBoxLayout() + vbox.addWidget(lab1) + win.setLayout(vbox) + win.setWindowTitle("QPixmap 範例") + win.show() + sys.exit(app.exec_()) diff --git a/pyqt5/CODE/元件使用範例/qt04_QScrollBar.py b/pyqt5/CODE/元件使用範例/qt04_QScrollBar.py new file mode 100644 index 0000000..16078de --- /dev/null +++ b/pyqt5/CODE/元件使用範例/qt04_QScrollBar.py @@ -0,0 +1,52 @@ +# -*- coding: utf-8 -*- + +''' + 【簡介】 + PyQt5中QScrollBar範例 + + +''' + +import sys +from PyQt5.QtCore import * +from PyQt5.QtGui import * +from PyQt5.QtWidgets import * + +class Example(QWidget): + def __init__(self): + super(Example, self).__init__() + self.initUI() + + def initUI(self): + hbox = QHBoxLayout( ) + self.l1 = QLabel("拖動滑動條改變顏色") + self.l1.setFont(QFont("Arial",16)) + hbox.addWidget(self.l1) + self.s1 = QScrollBar() + self.s1.setMaximum(255) + self.s1.sliderMoved.connect(self.sliderval) + self.s2 = QScrollBar() + self.s2.setMaximum(255) + self.s2.sliderMoved.connect(self.sliderval) + self.s3 = QScrollBar() + self.s3.setMaximum(255) + self.s3.sliderMoved.connect(self.sliderval) + hbox.addWidget(self.s1) + hbox.addWidget(self.s2) + hbox.addWidget(self.s3) + self.setGeometry(300, 300, 300, 200) + self.setWindowTitle('QScrollBar範例') + self.setLayout( hbox ) + + def sliderval(self): + print( self.s1.value(),self.s2.value(), self.s3.value() ) + palette = QPalette() + c = QColor(self.s1.value(),self.s2.value(), self.s3.value(),255) + palette.setColor(QPalette.Foreground,c) + self.l1.setPalette(palette) + +if __name__ == '__main__': + app = QApplication(sys.argv) + demo = Example() + demo.show() + sys.exit(app.exec_()) diff --git a/pyqt5/CODE/元件使用範例/qt04_QSplitter.py b/pyqt5/CODE/元件使用範例/qt04_QSplitter.py new file mode 100644 index 0000000..9a152b0 --- /dev/null +++ b/pyqt5/CODE/元件使用範例/qt04_QSplitter.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- + +''' + 【簡介】 + PyQt5中QSplitter範例 + + +''' + +import sys +from PyQt5.QtCore import * +from PyQt5.QtGui import * +from PyQt5.QtWidgets import * + +class SplitterExample(QWidget): + def __init__(self): + super(SplitterExample, self).__init__() + self.initUI() + + def initUI(self): + hbox = QHBoxLayout(self) + self.setWindowTitle('QSplitter範例') + self.setGeometry(300, 300, 300, 200) + topleft = QFrame() + topleft.setFrameShape(QFrame.StyledPanel) + + bottom = QFrame() + bottom.setFrameShape(QFrame.StyledPanel) + + splitter1 = QSplitter(Qt.Horizontal) + textedit = QTextEdit() + splitter1.addWidget(topleft) + splitter1.addWidget(textedit) + splitter1.setSizes([100,200]) + splitter2 = QSplitter(Qt.Vertical) + splitter2.addWidget(splitter1) + splitter2.addWidget(bottom) + hbox.addWidget(splitter2) + self.setLayout(hbox) + +if __name__ == '__main__': + app = QApplication(sys.argv) + demo = SplitterExample() + demo.show() + sys.exit(app.exec_()) + diff --git a/pyqt5/CODE/元件使用範例/qt04_QStackedWidget.py b/pyqt5/CODE/元件使用範例/qt04_QStackedWidget.py new file mode 100644 index 0000000..ad27f81 --- /dev/null +++ b/pyqt5/CODE/元件使用範例/qt04_QStackedWidget.py @@ -0,0 +1,70 @@ +# -*- coding: utf-8 -*- + +''' + 【簡介】 + PyQt5中QStackedWidget範例 + + +''' + +import sys +from PyQt5.QtCore import * +from PyQt5.QtGui import * +from PyQt5.QtWidgets import * + +class StackedExample(QWidget): + def __init__(self): + super(StackedExample, self).__init__() + self.setGeometry(300, 50, 10,10) + self.setWindowTitle('StackedWidget範例') + + self.leftlist = QListWidget () + self.leftlist.insertItem (0, '聯絡方式' ) + self.leftlist.insertItem (1, '個人資訊' ) + self.leftlist.insertItem (2, '教育程度' ) + self.stack1= QWidget() + self.stack2= QWidget() + self.stack3= QWidget() + self.stack1UI() + self.stack2UI() + self.stack3UI() + self.Stack = QStackedWidget (self) + self.Stack.addWidget (self.stack1) + self.Stack.addWidget (self.stack2) + self.Stack.addWidget (self.stack3) + hbox = QHBoxLayout(self) + hbox.addWidget(self.leftlist) + hbox.addWidget(self.Stack) + self.setLayout(hbox) + self.leftlist.currentRowChanged.connect(self.display) + + def stack1UI(self): + layout=QFormLayout() + layout.addRow("姓名",QLineEdit()) + layout.addRow("地址",QLineEdit()) + self.stack1.setLayout(layout) + + def stack2UI(self): + layout=QFormLayout() + sex=QHBoxLayout() + sex.addWidget(QRadioButton("男")) + sex.addWidget(QRadioButton("女")) + layout.addRow(QLabel("性別"),sex) + layout.addRow("生日",QLineEdit()) + self.stack2.setLayout(layout) + + def stack3UI(self): + layout=QHBoxLayout() + layout.addWidget(QLabel("科目")) + layout.addWidget(QCheckBox("物理")) + layout.addWidget(QCheckBox("數學")) + self.stack3.setLayout(layout) + + def display(self,i): + self.Stack.setCurrentIndex(i) + +if __name__ == '__main__': + app = QApplication(sys.argv) + demo = StackedExample() + demo.show() + sys.exit(app.exec_())