python面向窗體的開發_Python高級進階#019 pyqt5菜單menu應用,新建多窗體

知識回顧:

1.掌握的是QCalendarWidget日歷控件

2.click點擊事件(信號)觸發

3.掌握日期的格式化QDate

本節知識視頻教程

以下開始文字講解:

一、案例:菜單

1.新建第一個窗體

2.一級菜單的配置

3.二級菜單的配置

4.利用菜單功能實現界面跳轉,實現一個多窗體的打開

5.利用菜單功能實現溫馨提示

效果圖

二、開發思路

1.導入類QMainWindow。

2.使用Qmenu菜單類,這個菜單我們可以從窗體本身的方法進行獲取。

3.利用Qmenu的功能,來實現多級菜單addAtion這是一個直接產生點擊事件的行為;也可以用addMenu功能來增加子菜單。

4.每次都要彈出新窗體,這個新窗體,我們要制作成全局的窗體。

5.使用Qmessagebox來實現一個簡單的幫助。

三、開發過程要點

這里的簡便方法在哪里?

本例就是運用了QMainWindow本身功能的繼承

載入菜單的簡單功能

#利用窗體本身有的菜單欄功能進行載入

mymenu=self.menuBar()

mymenu.addAction(“新建”)? ? 這里是要新建一個菜單按鈕功能

mymenu.addAction("運行")

mymenu.addAction("調試")

mymenu.addAction("幫助")

菜單按鈕行為的觸發要點

actHelp=QAction("幫助",self)

利用Qaction的triggered信號實現菜單按鈕的功能。這個信號也稱為“觸發”

actHelp.triggered.connect(self.ljyHelp)

mymenu.addAction(actHelp)

幫助按鈕的顯示內容,通過消息框進行提示。

msgbox=QMessageBox(QMessageBox.Information,"幫助","歡迎加老劉微信selidev交流",QMessageBox.Ok,self)

msgbox.show()? 這里千萬不要忘記show出來

子菜單的書寫

這里要注意,直接將子菜單寫在父級菜單的下方。

這樣的好處,更多的也可以幫助我們進行二次理解。

子菜單的添加,通過addMenu功能

mymenu=self.menuBar()

mymenu.addMenu("文件")

子菜單的核心代碼

這里要注意,子菜單的寫法,是一級一級下來的,并且每一級的書寫,都有一個范圍對象。

mymenu=self.menuBar()? 總菜單欄的返回對象

fileMenu=mymenu.addMenu(“文件”)? ? 文件菜單的返回對象

fileMenu.addAction("新建")

recentFiles=fileMenu.addMenu(“最新的..”)? ?最新的…菜單項的返回對象

recentFiles.addAction("文件1")

recentFiles.addAction("文件2")

recentFiles.addAction("文件3")

對于新窗體的建議

建議一個窗體就寫一個類。那么每一次新的窗體出現的時候,就是實例化這個類。

注意:想要讓這個窗體被一直死循環監聽,必須要把這個窗體作為程序的全局變量。否則就會出現閃退現象。

新建一個窗體的寫法

1.直接寫一個自定義的類窗體

2.將這個類窗體先不要show

3.將這個類窗體在main中進行實例化,作為全局變量

4.在槽的行為中,將這個窗體show出來。

新建多個窗體

1.這里的思想要實例化多個窗體,且這些窗體都是全局變量

2.這里我們要考慮使用列表作為全局變量來承載這些窗體對象

3.此時,我們需要在自定義的類中書寫show的代碼

四、總結強調

1.掌握菜單欄的書寫

2.掌握菜單按鈕的單擊行為跳轉功能

3.掌握子菜單的建立

4.掌握多窗體的書寫注意點

本節教程源代碼:

import sysfrom PyQt5.QtWidgets import QApplication,QWidget,QMainWindow,QAction,QMessageBoxclass MyClass(QMainWindow):def __init__(self):super().__init__()self.initUI()def initUI(self):self.setWindowTitle("劉金玉編程")self.setGeometry(300,100,400,300)#制作菜單#利用窗體本身有的菜單欄功能進行載入mymenu=self.menuBar()fileMenu=mymenu.addMenu("文件")actNewWin=QAction("新建窗體",self)actNewWin.triggered.connect(self.myNewWin)fileMenu.addAction(actNewWin)recentFiles=fileMenu.addMenu("最新的..")recentFiles.addAction("文件1")recentFiles.addAction("文件2")recentFiles.addAction("文件3")mymenu.addAction("運行")mymenu.addAction("調試")actHelp=QAction("幫助",self)actHelp.triggered.connect(self.ljyHelp)mymenu.addAction(actHelp)self.show()def myNewWin(self):list1.append(MyClass2())def ljyHelp(self):msgbox=QMessageBox(QMessageBox.Information,"幫助","歡迎加老劉微信selidev交流",QMessageBox.Ok,self)msgbox.show()class MyClass2(QWidget):def __init__(self):super().__init__()self.initUI()def initUI(self):self.setWindowTitle("編程創造城市http://bcczcs.com")self.show()if __name__=="__main__":app=QApplication(sys.argv)mc=MyClass()list1=[]app.exec_()

長按關注公眾號

相關文章:

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/370797.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/370797.shtml
英文地址,請注明出處:http://en.pswp.cn/news/370797.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

用方面清理代碼

在我以前的文章中,我描述了字母轉換,并且提到了我們使用AspectJ解決了該任務,但是我沒有提及AspectJ的工作原理以及一般性的方面。 因此,在接下來的幾行中,我將解釋: 什么是面向方面的編程,為什…

java前三章總結

Java前三章總結 第一章:1.Java都有什么東西? Jdk(java開發工具包)包括 Jre(Java運行環境)---------->jvm(Java虛擬機) 應用(javac) Java API和一些常用的j…

原型 - 實現自己的jQuery

每個第一次使用jq的開發者都感到驚嘆,jq的$太神奇了,究竟是怎么做到的使用$控制dom 贊嘆前人之余,探究其本源才是前端開發者應該做的事,社區常常說,不要重復造輪子, 可是啊,連輪子都造不出來,又怎么去了解在什么環境下用什么輪子,怎么樣才可以造成更加優秀的輪子, 不同階段對…

html 用svg縮放拉伸,html – 拉伸SVG以適應其父級的100%高度和寬度

如果您對另一種選擇開放,您可以使用純CSS創建形狀.它不會像SVG那樣整潔,但它會響應:* {box-sizing:border-box;}.box {margin:40px;padding:0 10px;max-width:200px;display:inline-block;vertical-align:top;border-right:2px solid green;border-left:2px solid g…

server.transfer 無法跳轉頁面_H5 騰訊地圖無法導航

uni-app 打包H5騰訊地圖無法導航前言:最近幾天用uni-app開發安卓和iOS應用,打包成APP安裝包后,APP內做地圖導航沒有問題,APP內使用的是高德地圖;但是打包成為H5頁面后,運行在微信內置瀏覽器或者運行在第三方…

打破PermGen神話

在我的最新文章中,我解釋了可能導致java.lang.OutOfMemoryError:PermGen空間崩潰的原因 。 現在該討論該問題的可能解決方案了。 或者,更確切地說,是關于互聯網對可能解決方案的建議。 不幸的是,我只能說,我…

Linux獲取當前年月日后綴精確到微秒,例如2017-05-06T23:57:07.713171

代碼如下&#xff1a;詳細見注釋 #include <stdio.h> #include <string.h> #include <time.h> #include <sys/time.h>int main() {struct timeval start;struct tm *local_time NULL;static char str_time[100];char ms[16];gettimeofday( &start…

PhiloGL學習(5)——神說要有光,便有了光

前言 上一篇文章中介紹了如何創建三維對象及加載皮膚&#xff0c;本文為大家介紹如何為場景添加光源。 一、 原理分析 光在任何地方都是非常重要的&#xff0c;無論在哪里都說是要發光發熱&#xff0c;光和熱也是分不開的。光線分為點光源和線光源&#xff0c;所謂點光源和線光…

android 彈出彈框2秒消失_基于HTML5 Canvas 實現彈出框

前言用戶鼠標移入時&#xff0c;有彈出框出現&#xff0c;這樣的需求很常見。這在處理 HTML 元素實現時簡單&#xff0c;但是如果是對 HTML5 Canvas 構成的圖形進行處理&#xff0c;這種方法不再適用&#xff0c;因為 Canvas 使用的是另外一套機制&#xff0c;無論在 Canvas 上…

【CSS】小妙招,各種問題總結方法處理

1.實現div文字溢出自動省略號截取 overflow:hidden; /*超過部分不顯示*/       text-overflow:ellipsis; /*超過部分用點點表示*/       white-space:nowrap;/*不換行*/ 2.規定行數的截取效果 text-overflow: ellipsis; /*有些示例里需要定義該屬性&#xff0c…

Java2Days 2012:Java EE

Java2Days會議是東歐的主要活動&#xff0c;目的是介紹Java開發的最新趨勢。 今年&#xff0c;該活動于10月25日至26日在保加利亞的索非亞舉行。 我在那里&#xff0c;并有機會與一些SAP的同事一起品嘗了一些最新的Java&#xff0c;云和移動內容&#xff0c;這些內容已直接發送…

html5布局總結,HTML5網頁布局的總結

可以通過 和 將 html 元素組合起來。html 塊元素大多數 html 元素被定義為塊級元素或內聯元素。編者注&#xff1a;“塊級元素”譯為 block level element&#xff0c;“內聯元素”譯為 inline element。塊級元素在顯示時&#xff0c;通常會以新行來開始(和結束)。例子&#x…

c++ 優先隊列_C/C++數據結構:隊列結構最全解析!帶你零基礎入門隊列結構

前言上一章節針對于C語言棧結構做了解析&#xff0c;不清楚的可以回顧一下。本章節主要針對于C語言的基礎數據結構隊列做以解析。數據結構之隊列隊列是一種特殊的 線性表 &#xff0c;特殊之處在于它只允許在表的前端&#xff08;front&#xff09;進行刪除操作&#xff0c;而在…

bit-map再顯身手:test.txt中有42億個無符號整數, 求不存在于test.txt中的最小無符號整數。限制: 可用內存為600MB....

先看看這個題目&#xff1a;test.txt中有42億個無符號整數&#xff0c; 求不存在于test.txt中的最小無符號整數. 限制&#xff1a; 可用內存為600MB. 又是大數據。 看到42億&#xff0c; 有靈感沒&#xff1f; 要知道&#xff0c; 2的32次方就是42億多一點點啊。42億個無符號…

周期均方根和有效值的區別_黑豬肉和白豬肉有啥區別?

為啥散養黑豬肉的價格要比白豬貴很多?這其中的原因不看不知道!市面上的散養黑豬肉通常要比白豬肉貴很多&#xff0c;但是仍有不少人喜歡買黑豬肉回家吃&#xff0c;散養黑豬肉和白豬肉不僅僅是口感上有所差距&#xff0c;其價值差距體現在很多方面&#xff0c;接下來小編就和大…

BZOJ1734: [Usaco2005 Feb]Aggressive cows 憤怒的牛

【傳送門&#xff1a;BZOJ1734】 簡要題意&#xff1a; 約翰有N 間牛棚&#xff0c;這些牛棚坐落在一條直線上&#xff0c;第i 間牛棚位于坐標Xi 的位置。他要把C 頭 奶牛安排在這些牛棚里。每間牛棚最多可以放一頭奶牛&#xff0c;也可以空著。這些奶牛的脾氣都很暴燥&#xf…

CSS基礎范例

1 <!DOCTYPE html>2 <html lang"en">3 <head>4 <meta charset"UTF-8">5 <title>Title</title>6 <style>7 *{8 margin: 0; /*重置*/9 padding: 0…

測試環境搭建流程_前端構建 DevOps 搭建 DevOps 基礎平臺(中)

前言搭建基礎平臺搭建上篇的時候的時候&#xff0c;已經介紹過了項目流程設計、數據庫搭建、jwt 登錄等模塊。此篇我們介紹分支管理設計及其他的基礎模塊。后端模塊DevOps - Gitlab Api使用(已完成&#xff0c;點擊跳轉)DevOps - 搭建 DevOps 基礎平臺(已完成 50%)基礎平臺搭建…

什么是PermGen泄漏?

接下來是對Java應用程序中特定類型的內存問題的實用介紹。 即–我們將分析導致java.lang.OutOfMemoryError&#xff1a;PermGen空間的錯誤 堆棧跟蹤中的癥狀。 首先&#xff0c;我們將介紹理解該主題所需的核心概念&#xff0c;并說明什么是對象&#xff0c;類&#xff0c;類…

html浮動炫酷樣式,jQuery和CSS3炫酷表單浮動標簽特效

這是一款炫酷的jQuery和CSS3表單浮動標簽特效。浮動標簽是指輸入框中的文字或占位文本在輸入框聚焦的時候&#xff0c;以動畫的方式浮動到指定的地方。浮動標簽特效是一種新穎時尚的動畫特效&#xff0c;不僅效果很酷&#xff0c;而且能以明確的方式提示用戶該輸入框應該填寫上…