學會這一招,圖形界面編程不再複雜,Python工具PyCharm使用技巧

2021-01-11 python高手養成

上一篇內容我們使用PyQt5構造了一個GUI程序的通用框架(圖形界面編程技巧,用Python中PyQt5庫快速創建一個應用程式框架)。這樣的圖形用戶接口相對來說比較簡單。我們知道,日常使用的圖形界面都是比較複雜的。

輕鬆睡大覺?

比如,一個應用程式中可能有很多圖形接口供用戶來使用。常見的菜單欄、工具欄、狀態欄都沒有在我們的框架中定義。

醒醒吧,還有很長的路要走

今天,帶大家了解一個功能更加豐富的GUI應用程式框架。

原始碼

不贅述了,直接上代碼

開啟代碼模式

#!/usr/bin/env python

# coding:utf-8

import sys

from PyQt5.Qt import *

from PyQt5.QtWidgets import QMainWindow, QApplication, QDesktopWidget, QWidget

from PyQt5.QtWidgets import QHBoxLayout, QPushButton, QTextEdit, QAction, QToolBar

from PyQt5.QtGui import QIcon

class MainWindow(QMainWindow):

def __init__(self, parent=None, *args, **kwargs):

super(MainWindow, self).__init__(parent, *args, **kwargs)

self.initUI()

def initUI(self):

# 窗體設置

self.setWindowTitle('PyQt MainWindow示例')

self.setWindowIcon(QIcon('icon\\main.png'))

self.resize(800, 600)

# 創建一個Action(範例,其他Acion參照這個)

self.createActions()

# 頂部菜單欄

self.createMenuBar()

# 次頂部工具欄

self.createToolBar()

# 創建狀態欄

self.createStatusBar()

# 創建主工作區

self.createMainUI()

# 窗體居中

self.center()

# 創建主工作區

def createMainUI(self):

self.qtextEdit = QTextEdit()

layout = QHBoxLayout()

layout.addWidget(self.qtextEdit)

main_frame = QWidget()

main_frame.setLayout(layout)

self.setCentralWidget(main_frame)

# 創建菜單欄

def createMenuBar(self):

self.menu = self.menuBar()

file = self.menu.addMenu('文件')

file.addAction(self.newAction)

file.addAction(self.openAction)

file.addAction(self.exitAction)

tool = self.menu.addMenu('編輯')

tool.addAction(self.copyAction)

tool.addAction(self.pasteAction)

tool.addAction(self.cutAction)

helps = self.menu.addMenu('幫助')

helps.addAction(self.helpAction)

# 創建工具欄

def createToolBar(self):

self.toolBar = QToolBar()

self.addToolBar(Qt.LeftToolBarArea,self.toolBar)

self.toolBar.addAction(self.exitAction)

self.toolBar.addAction(self.openAction)

self.toolBar.addAction(self.copyAction)

self.toolBar.addAction(self.pasteAction)

self.toolBar.addAction(self.cutAction)

# 創建狀態欄

def createStatusBar(self):

self.status = self.statusBar()

self.status.showMessage('這是狀態欄提示信息', 0)

# 創建Action

def createActions(self):

# 退出程序

self.exitAction = QAction(QIcon('icon\\exit.png'), '退出', self)

self.exitAction.setShortcut('Ctrl+Q')

self.exitAction.setStatusTip('退出程序')

self.exitAction.triggered.connect(self.close)

# 打開文件

self.openAction = QAction(QIcon('icon\\open.png'), '打開', self)

self.openAction.setShortcut('Alt+O')

self.openAction.setStatusTip('打開文件')

self.openAction.triggered.connect(self.open)

# 新建文件

self.newAction = QAction(QIcon('icon\\new.png'), '新建', self)

self.newAction.setShortcut('Alt+N')

self.newAction.setStatusTip('新建文件')

self.newAction.triggered.connect(self.new)

# 複製

self.copyAction = QAction(QIcon('icon\\copy.png'), '複製', self)

self.copyAction.setShortcut('Ctrl+C')

self.copyAction.setStatusTip('複製內容')

self.copyAction.triggered.connect(self.copy)

# 粘貼

self.pasteAction = QAction(QIcon('icon\\paste.png'), '粘貼', self)

self.pasteAction.setShortcut('Ctrl+V')

self.pasteAction.setStatusTip('粘貼內容')

self.pasteAction.triggered.connect(self.paste)

# 剪切

self.cutAction = QAction(QIcon('icon\\cut.png'), '剪切', self)

self.cutAction.setShortcut('Ctrl+X')

self.cutAction.setStatusTip('剪切內容')

self.cutAction.triggered.connect(self.cut)

# 幫助

self.helpAction = QAction(QIcon('icon\\help.png'), '關於', self)

self.helpAction.setShortcut('Alt+H')

self.helpAction.setStatusTip('單擊獲取幫助信息')

self.helpAction.triggered.connect(self.helps)

# 窗口位置居中

def center(self):

screen = QDesktopWidget().screenGeometry()

size = self.geometry()

self.move((screen.width() - size.width()) // 2,

(screen.height() - size.height()) // 2)

def open(self):

print('打開文件')

def new(self):

print('新建文件')

def copy(self):

print('複製內容')

def paste(self):

print('粘貼內容')

def cut(self):

print("剪切內容")

def helps(self):

print('幫助信息')

if __name__ == "__main__":

app = QApplication(sys.argv)

app.setWindowIcon(QIcon('icon.png'))

form = MainWindow()

form.show()

sys.exit(app.exec_())

為方便大家測試,程序截圖如下

代碼縮進結構
使用自定義類創建GUI程序

使用時,大家講函數內容粘貼到相應的位置即可。

結果展示

上面代碼我們得到了如下圖所示的GUI應用程式框架。

運行結果

功能很齊全,不是嗎?標題、菜單欄、工具欄、狀態欄都有。想製作自己的GUI程序界面,直接修改相應的內容即可。

自己的工具包:方便高效

有什麼用

上面的代碼有什麼用呢?

簡化輸入代碼

我們知道,PyCharm中有個很強大的功能叫live template模板,可使用簡短的輸入來代替大量代碼的錄入。(參見還在使用PyCharm一行行敲代碼嗎?使用這個方法讓你節省一半時間),你可以將上述代碼製作成一個live template模板,以後創建自己的GUI應用程式時,你就擁有了自己的工具包……想想都很酷。

簡單即是高效

代碼更易讀、易理解

這樣封裝之後的代碼,更加容易理解,在創建各個控制項時,我們使用了相應的方法。如果你想擴展自己的程序功能,只需要修改相應的方法即可。

更易讀

應用程式更容易擴展

代碼這樣封裝,使得業務邏輯和界面做到了分離(本程序並沒有分離徹底,但作為示例,為了幫助大家理解,所以沒有進行徹底分割)。大家在實際應用中可以將上面的內容進行合理的調整。

未來可擴展

live template效果展示

定義live template模板

此時,在編輯器中輸入qtmw,按下回車鍵後,這串100多行的代碼就自動進行了輸入,輸入程序標題和窗口大小後,運行看下結果,怎麼樣?我們不到一分鐘的時間創建了這麼一個複雜的GUI應用程式,是不是很有成就感?

或許成就感是這樣的

好了,今天的內容就到這裡了,小夥伴們這項技能你Get到了嗎?

需要源碼的小夥伴關注並私信我,我將原始碼發給你,以後就不用一行一行敲代碼了……

喜歡Python編程的小夥伴一定要關注我哦,後續會推出一些更有意思的實戰內容。

轉載請註明出處,百家號:Python高手養成

相關焦點

  • 圖形界面編程技巧,用Python中PyQt5庫快速創建一個應用程式框架
    它既可以開發GUI應用程式,也可用於開發非GUI程序,比如控制臺工具和伺服器。Qt是面向對象的框架,使用特殊的代碼生成擴展(稱為元對象編譯器(Meta Object Compiler, moc))以及一些宏,Qt很容易擴展,並且允許真正地組件編程。2008年,Qt Company科技被諾基亞公司收購,Qt也因此成為諾基亞旗下的程式語言工具。
  • windows上python開發環境的搭建
    通過自帶的交互式窗口,我們可以執行簡單的python語句,對於實際開發中需要的大量代碼,我們則需要編寫python腳本,通過腳本的方式來執行。所謂腳本,就是一個文件,裡面保存了程序的原始碼。腳本文件的創建,既可以通過文本編輯器,也可以通過成熟的IDE,只需要記住一點,千萬不用使用windows自帶的記事本和word。
  • Python視頻教程網課編程零基礎入門數據分析網絡爬蟲全套Python...
    總目錄 零基礎全能篇(4套課程) 實用編程技巧進價(1套課程) 數據分析與挖掘(8套課程) 辦公自動化(3套課程) 機器學習與人工智慧(7套課程) 開發實戰篇(4套課程) 量化投資(2套課程) 網絡爬蟲(6套課程) 資料庫操作(1套課程) python
  • 科悟學院介紹什麼是Python、python能做什麼?
    這是很多人想知道的,今天小編就給你揭秘一個行業——Python(AI人工智慧),有人會問python到底是什麼?能做什麼?下面科悟學院介紹什麼是python和python能做什麼,希望對於正在學習的你有所幫助。
  • 初識pycharm編寫方法
    使用pycharm編輯器 雙擊我們安裝好的pycharm編輯器(安裝過程在前幾節)選擇第一個新建項目第一個pure python是純python,下面的那些是一些擴展,暫時不用,我們就選第一個Location是選擇編寫代碼保存的路徑,根據自己的情況點右側小文件夾按鈕,自行選擇一個路徑保存即可保存後點擊右下角的
  • Python入門小迷宮,走完這個迷宮,就能掌握python編程基礎
    這是一個很神奇的迷宮,走完這個迷宮就能掌握python基礎。其實,這是一個用python做的迷宮小遊戲,非常簡單,但對於python初學者來說,還是有一定的挑戰性,但TONOW有源碼和教程,只要跟著python迷宮小遊戲的教程和相應的源碼,不僅很容易就能自己開發出這個遊戲,還能在這個過程中,掌握python編程的基礎哦!
  • Python語言中使用pyqtgraph庫實現數據可視化
    應該說,matplotlib庫在靜態圖形的表現方面非常強大,但其缺點也比較明顯,如在動態圖形的繪製上,其刷新速度不盡人意。如在實時數據採集場合,要求高速實時繪圖,這時候很難滿足我們的要求,當然,可以通過其它方式如調用其提供的底層API自己編程優化,可以提高其繪圖速度,但難度相對較大。
  • 7款 Python 工具,讓你在工作上更佔優勢!
    想要成為一個程式設計師,除了學習各種教程之外,熟悉各種已經在生產環境中使用的工具會讓你更快的成長!這裡有7款python工具,是所有數據專家必不可少的工具。當你對他們有一定了解後,會成為你找工作的絕對優勢!
  • |python|電氣和電子工程師協會|編程...
    說實話,這是我第一次被程式語言深深迷住,透過它,我們能看到事物更本質和客觀的樣子。當然,除了熱文關鍵詞,我們還能用Python獲得很多問題的答案:比如,金融行業人員面對龐大的數據和複雜的流程時,輸入幾行代碼就可以一次性處理上百個表格,自動抓取關鍵數據。
  • 「技術文章」《Python 資料庫 GUI CGI編程》
    2.1 Linux下安裝MySQLdb模塊 使用包安裝可以 wget http://sourceforge.net/projects/mysql-python/files/latest/download$ tar xfz MySQL-python-1.2.3.tar.gz$ cd MySQL-python-1.2.3$whereis mysql_config
  • 這有一招實用的在線拍照翻譯技巧
    老實說,現在很多工作所要面對的客戶,不僅僅是我們自己國家的人,這也就代表了,我們所要接觸到的文件,可能很多都是外國語言文件。對於一些外語水平沒那麼好的小夥伴們來說,這無疑會給自己的工作帶來一些困擾,畢竟看不懂文件的話,是沒辦法處理好工作的。
  • 常用的十大 python 圖像處理工具
    Python成為這種圖像處理任務是一個恰當選擇,這是因為它作為一種科學程式語言正在日益普及,並且在其生態系統中免費提供許多最先進的圖像處理工具供大家使用。讓我們看一下可以用於圖像處理任務中的常用 Python 庫有哪些吧。
  • 使用Python和Tesseract來識別圖形驗證碼
    一、關於圖形驗證碼識別與tesseractOCR儘管多數圖型驗證碼只有區區幾個數字或字母,但你可能聽說了,在進行機器識別的過程中,你要收集樣本,對圖片去噪、二值化、提取字符、計算特徵,甚至還要祭出神經網絡去訓練數據進行機器學習……還沒開幹,退堂鼓早打響三遍了。
  • 三大Python GUI開源框架,誰才是你的最愛?
    在Python中,開始使用GUI編程的步驟並不複雜,但是它們要求用戶開始做出一些選擇。作為通用程式語言,每個常見作業系統都有可用的解釋器,所以創建圖形用戶界面對於Python來說並不是難事。因為程式設計師有很多的選擇,真正困難的是如何為用戶創建一個簡單的方式來與程序互動。  在各種各樣的平臺上都有相應的UI框架,它們可能分別可以在Windows,Mac和Linux平臺上運行,也可能可以同時在這三個平臺上運行。  「你的應用程式是否有一個傳統的圖形用戶界面?」
  • Python新手爬蟲,簡單製作抓取廖雪峰的教程的小爬蟲
    Python 數據處理 Python編程從入門到實踐 核心編程基礎教程 網絡爬蟲入門書籍 python視頻編程從入門到精通 程序設計教材人民郵電¥72.2領3元券話不多說,先來看看整個爬蟲過程吧!目標:廖雪峰官網—python教程工具:pycharm、python3.6、requests庫、time庫、lxml庫思路:85 抓取所有的目錄章節 url85 找到 url內教程主體所在的 div85 遍歷 div下所有標籤,文本和代碼部分內容直接保存85 區分其中的代碼、圖片、視頻 3個內容,
  • Python開發者必知的 11 個 Python GUI 庫,你用過幾個?
    當你使用python編寫應用程式時,你就一定要使用GUI。Python GUI的選擇有很多。目前來說,Python GUI程序庫有30多個跨平臺框架。現在就列出其我認為最好的11個.
  • Pytorch框架安裝方法(基於Anaconda環境和Pycharm IDE)
    1.6 單擊啟動Anaconda Prompt 創建虛擬「房間」通過conda創建一個名為:pytorch的虛擬「房間」,可以方便未來對不同版本的PyTorch進行管理,具體方法如下:conda create -n pytorch python=3.61.7 查看創建的「房間」方法:conda info --envs
  • 數據科學的Python軟體包
    Python是使用最廣泛的程式語言之一。儘管標準Python並沒有提供太多功能,但其數量眾多的開放原始碼和第三方庫在開發人員中頗受歡迎。您只需命名域,Python就會為您提供最佳的軟體包和庫。數據科學和機器學習是這個時代的兩項苛刻技術,而Python在這兩個領域的表現要好於優。除Python之外,R是數據科學項目中經常使用的另一種程式語言。
  • Python為什麼這麼火?小孩子適合學習python編程嗎?
    「人生苦短,我選Python」——魯迅程式語言由於學習門檻比較高,一直以來似乎只有程式設計師之間會互相討論,普通人也很難對冰冷的語法和算法什麼的感興趣。但自從Python出現後,程式語言和我們日常生活中的鴻溝被悄悄打破了,越來越多的人開始使用它,甚至開始愛上它。
  • 從零開始寫Python爬蟲,四大工具你值得擁有!
    如果你正在學習編程,那麼「爬蟲」絕對是你不可忽視的。那麼,學習python爬蟲之前需要哪些準備?一顆熱愛學習,不屈不撓的心一臺有鍵盤的電腦(什麼系統都行。我用的os x,所以例子會以這個為準)html相關的一些知識。