<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # PyQt5 中的第一個程序 > 原文: [http://zetcode.com/gui/pyqt5/firstprograms/](http://zetcode.com/gui/pyqt5/firstprograms/) 在 PyQt5 教程的這一部分中,我們學習一些基本功能。 這些示例顯示了一個工具提示和一個圖標,關閉了一個窗口,顯示了一個消息框,并在桌面上將窗口居中。 ## 簡單的例子 這是一個顯示小窗口的簡單示例。 然而,我們可以利用這個窗口做很多事情。 我們可以調整大小,最大化或最小化它。 這需要大量的編碼。 已經有人對該功能進行了編碼。 由于它在大多數應用中都重復執行,因此無需再次編碼。 PyQt5 是高級工具包。 如果我們使用較低級的工具箱進行編碼,則下面的代碼示例可能很容易包含數百行。 `simple.py` ```py #!/usr/bin/python3 # -*- coding: utf-8 -*- """ ZetCode PyQt5 tutorial In this example, we create a simple window in PyQt5. Author: Jan Bodnar Website: zetcode.com Last edited: August 2017 """ import sys from PyQt5.QtWidgets import QApplication, QWidget if __name__ == '__main__': app = QApplication(sys.argv) w = QWidget() w.resize(250, 150) w.move(300, 300) w.setWindowTitle('Simple') w.show() sys.exit(app.exec_()) ``` 上面的代碼示例在屏幕上顯示了一個小窗口。 ```py import sys from PyQt5.QtWidgets import QApplication, QWidget ``` 在這里,我們提供必要的導入。 基本窗口小部件位于`PyQt5.QtWidgets`模塊中。 ```py app = QApplication(sys.argv) ``` 每個 PyQt5 應用都必須創建一個應用對象。 `sys.argv`參數是命令行中的參數列表。 可以從外殼運行 Python 腳本。 這是我們可以控制腳本啟動的方式。 ```py w = QWidget() ``` `QWidget`小部件是 PyQt5 中所有用戶界面對象的基類。 我們為`QWidget`提供了默認的構造器。 默認構造器沒有父代。 沒有父級的窗口小部件稱為窗口。 ```py w.resize(250, 150) ``` `resize()`方法調整窗口小部件的大小。 寬 250 像素,高 150 像素。 ```py w.move(300, 300) ``` `move()`方法將窗口小部件移動到屏幕上`x = 300`,`y = 300`坐標的位置。 ```py w.setWindowTitle('Simple') ``` 我們用`setWindowTitle()`設置窗口的標題。 標題顯示在標題欄中。 ```py w.show() ``` `show()`方法在屏幕上顯示小部件。 首先在內存中創建一個小部件,然后將其顯示在屏幕上。 ```py sys.exit(app.exec_()) ``` 最后,我們進入應用的主循環。 事件處理從這一點開始。 mainloop 從窗口系統接收事件,并將其分配給應用小部件。 如果調用`exit()`方法或主窗口小部件被銷毀,則主循環結束。 `sys.exit()`方法可確保干凈退出。 將告知環境應用如何結束。 `exec_()`方法帶有下劃線。 這是因為`exec`是 Python 關鍵字。 因此,使用了`exec_()`。 ![Simple](https://img.kancloud.cn/1e/2c/1e2c95e8df31ef3a55342f52096ae965_252x176.jpg) 圖:簡單 ## 應用圖標 應用圖標是一個小圖像,通常顯示在標題欄的左上角。 在下面的示例中,我們將展示如何在 PyQt5 中做到這一點。 我們還將介紹一些新方法。 某些環境在標題欄中不顯示圖標。 我們需要啟用它們。 如果沒有看到圖標,請參閱我在 Stackoverflow 上的[答案](https://stackoverflow.com/questions/44080247/pyqt5-does-now-show-icons/45439678#45439678)以獲取解決方案。 `icon.py` ```py #!/usr/bin/python3 # -*- coding: utf-8 -*- """ ZetCode PyQt5 tutorial This example shows an icon in the titlebar of the window. Author: Jan Bodnar Website: zetcode.com Last edited: August 2017 """ import sys from PyQt5.QtWidgets import QApplication, QWidget from PyQt5.QtGui import QIcon class Example(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): self.setGeometry(300, 300, 300, 220) self.setWindowTitle('Icon') self.setWindowIcon(QIcon('web.png')) self.show() if __name__ == '__main__': app = QApplication(sys.argv) ex = Example() sys.exit(app.exec_()) ``` 前面的示例以過程樣式編碼。 Python 編程語言支持過程和面向對象的編程風格。 在 PyQt5 中編程意味著在 OOP 中編程。 ```py class Example(QWidget): def __init__(self): super().__init__() ... ``` 面向對象編程中的三個重要方面是類,數據和方法。 在這里,我們創建了一個名為`Example`的新類。 `Example`類繼承自`QWidget`類。 這意味著我們調用了兩個構造器:第一個構造器用于`Example`類,第二個構造器用于繼承的類。 `super()`方法返回`Example`類的父對象,我們將其稱為構造器。 `__init__()`方法是 Python 語言的構造方法。 ```py self.initUI() ``` GUI 的創建委托給`initUI()`方法。 ```py self.setGeometry(300, 300, 300, 220) self.setWindowTitle('Icon') self.setWindowIcon(QIcon('web.png')) ``` 所有這三種方法都從`QWidget`類繼承。 `setGeometry()`做兩件事:在屏幕上找到窗口并設置其大小。 前兩個參數是窗口的 x 和 y 位置。 第三個是窗口的寬度,第四個是窗口的高度。 實際上,它將`resize()`和`move()`方法結合在一起。 最后一種方法設置應用圖標。 為此,我們創建了一個`QIcon`對象。 `QIcon`接收到要顯示的圖標的路徑。 ```py if __name__ == '__main__': app = QApplication(sys.argv) ex = Example() sys.exit(app.exec_()) ``` 將創建應用和示例對象。 主循環開始。 ![Icon](https://img.kancloud.cn/d2/a9/d2a9537f6818d09294e001d565b5c52c_304x154.jpg) 圖:圖標 ## 顯示工具提示 我們可以為我們的任何小部件提供氣球幫助。 `tooltip.py` ```py #!/usr/bin/python3 # -*- coding: utf-8 -*- """ ZetCode PyQt5 tutorial This example shows a tooltip on a window and a button. Author: Jan Bodnar Website: zetcode.com Last edited: August 2017 """ import sys from PyQt5.QtWidgets import (QWidget, QToolTip, QPushButton, QApplication) from PyQt5.QtGui import QFont class Example(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): QToolTip.setFont(QFont('SansSerif', 10)) self.setToolTip('This is a <b>QWidget</b> widget') btn = QPushButton('Button', self) btn.setToolTip('This is a <b>QPushButton</b> widget') btn.resize(btn.sizeHint()) btn.move(50, 50) self.setGeometry(300, 300, 300, 200) self.setWindowTitle('Tooltips') self.show() if __name__ == '__main__': app = QApplication(sys.argv) ex = Example() sys.exit(app.exec_()) ``` 在此示例中,我們顯示了兩個 PyQt5 小部件的工具提示。 ```py QToolTip.setFont(QFont('SansSerif', 10)) ``` 此靜態方法設置用于呈現工具提示的字體。 我們使用 10pt SansSerif 字體。 ```py self.setToolTip('This is a <b>QWidget</b> widget') ``` 要創建工具提示,我們調用`setTooltip()`方法。 我們可以使用富文本格式。 ```py btn = QPushButton('Button', self) btn.setToolTip('This is a <b>QPushButton</b> widget') ``` 我們創建一個按鈕小部件并為其設置工具提示。 ```py btn.resize(btn.sizeHint()) btn.move(50, 50) ``` 調整按鈕的大小并在窗口上移動。 `sizeHint()`方法為按鈕提供了建議的大小。 ![Tooltips](https://img.kancloud.cn/7d/b6/7db6f9c8c03f72a8b527cc3fbd6ec545_302x226.jpg) 圖:工具提示 s ## 關閉窗口 關閉窗口的明顯方法是單擊標題欄上的 X 標記。 在下一個示例中,我們展示了如何以編程方式關閉窗口。 我們將簡要介紹信號和槽。 以下是我們在示例中使用的`QPushButton`小部件的構造器。 ```py QPushButton(string text, QWidget parent = None) ``` `text`參數是將在按鈕上顯示的文本。 `parent`是一個小部件,我們在其上放置了按鈕。 在我們的情況下,它將是`QWidget`。 應用的小部件形成層次結構。 在此層次結構中,大多數小部件都有其父級。 沒有父級的小部件是頂層窗口。 `quitbutton.py` ```py #!/usr/bin/python3 # -*- coding: utf-8 -*- """ ZetCode PyQt5 tutorial This program creates a quit button. When we press the button, the application terminates. Author: Jan Bodnar Website: zetcode.com Last edited: January 2018 """ import sys from PyQt5.QtWidgets import QWidget, QPushButton, QApplication class Example(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): qbtn = QPushButton('Quit', self) qbtn.clicked.connect(QApplication.instance().quit) qbtn.resize(qbtn.sizeHint()) qbtn.move(50, 50) self.setGeometry(300, 300, 250, 150) self.setWindowTitle('Quit button') self.show() if __name__ == '__main__': app = QApplication(sys.argv) ex = Example() sys.exit(app.exec_()) ``` 在此示例中,我們創建一個退出按鈕。 單擊按鈕后,應用終止。 ```py qbtn = QPushButton('Quit', self) ``` 我們創建一個按鈕。 該按鈕是`QPushButton`類的實例。 構造器的第一個參數是按鈕的標簽。 第二個參數是父窗口小部件。 父窗口小部件是`Example`小部件,通過繼承它是`QWidget`。 ```py qbtn.clicked.connect(QApplication.instance().quit) ``` PyQt5 中的事件處理系統是通過信號和槽機制構建的。 如果單擊按鈕,將發出信號`clicked`。 該槽可以是 Qt 槽或任何可調用的 Python。 用`QApplication.instance()`檢索的`QCoreApplication`包含主事件循環-它處理并調度所有事件。 單擊的信號連接到`quit()`方法,該方法終止應用。 通信是在兩個對象之間進行的:發送者和接收者。 發送者是按鈕,接收者是應用對象。 ![Quit button](https://img.kancloud.cn/7f/bf/7fbf835086893c7a6e1db35f1e11c803_252x176.jpg) 圖:退出按鈕 ## `MessageDialog` 默認情況下,如果單擊標題欄上的 X 按鈕,則`QWidget`將關閉。 有時我們想要修改此默認行為。 例如,如果我們在編輯器中打開了一個文件,對此我們做了一些更改。 我們顯示一個消息框以確認操作。 `messagebox.py` ```py #!/usr/bin/python3 # -*- coding: utf-8 -*- """ ZetCode PyQt5 tutorial This program shows a confirmation message box when we click on the close button of the application window. Author: Jan Bodnar Website: zetcode.com Last edited: August 2017 """ import sys from PyQt5.QtWidgets import QWidget, QMessageBox, QApplication class Example(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): self.setGeometry(300, 300, 250, 150) self.setWindowTitle('Message box') 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() if __name__ == '__main__': app = QApplication(sys.argv) ex = Example() sys.exit(app.exec_()) ``` 如果我們關閉`QWidget`,則會生成`QCloseEvent`。 要修改小部件的行為,我們需要重新實現`closeEvent()`事件處理器。 ```py reply = QMessageBox.question(self, 'Message', "Are you sure to quit?", QMessageBox.Yes | QMessageBox.No, QMessageBox.No) ``` 我們顯示一個帶有兩個按鈕的消息框:是和否。第一個字符串出現在標題欄上。 第二個字符串是對話框顯示的消息文本。 第三個參數指定出現在對話框中的按鈕的組合。 最后一個參數是默認按鈕。 該按鈕最初具有鍵盤焦點。 返回值存儲在`reply`變量中。 ```py if reply == QtGui.QMessageBox.Yes: event.accept() else: event.ignore() ``` 在這里,我們測試返回值。 如果單擊“是”按鈕,我們將接受導致小部件關閉和應用終止的事件。 否則,我們將忽略關閉事件。 ![Message box](https://img.kancloud.cn/9f/ef/9fef473c6a175bc15bf5f34e424e83cc_200x113.jpg) 圖:消息框 ## 屏幕上的居中窗口 以下腳本顯示了如何在桌面屏幕上居中放置窗口。 `center.py` ```py #!/usr/bin/python3 # -*- coding: utf-8 -*- """ ZetCode PyQt5 tutorial This program centers a window on the screen. Author: Jan Bodnar Website: zetcode.com Last edited: August 2017 """ import sys from PyQt5.QtWidgets import QWidget, QDesktopWidget, QApplication class Example(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): self.resize(250, 150) self.center() self.setWindowTitle('Center') self.show() def center(self): qr = self.frameGeometry() cp = QDesktopWidget().availableGeometry().center() qr.moveCenter(cp) self.move(qr.topLeft()) if __name__ == '__main__': app = QApplication(sys.argv) ex = Example() sys.exit(app.exec_()) ``` `QDesktopWidget`類提供有關用戶桌面的信息,包括屏幕大小。 ```py self.center() ``` 將使窗口居中的代碼位于自定義`center()`方法中。 ```py qr = self.frameGeometry() ``` 我們得到一個指定主窗口幾何形狀的矩形。 這包括任何窗框。 ```py cp = QDesktopWidget().availableGeometry().center() ``` 我們計算出顯示器的屏幕分辨率。 從這個分辨率,我們得到了中心點。 ```py qr.moveCenter(cp) ``` 我們的矩形已經具有寬度和高度。 現在,我們將矩形的中心設置為屏幕的中心。 矩形的大小不變。 ```py self.move(qr.topLeft()) ``` 我們將應用窗口的左上角移動到`qr`矩形的左上角,從而將窗口居中放置在屏幕上。 在 PyQt5 教程的這一部分中,我們在 PyQt5 中創建了簡單的代碼示例。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看