知識回顧:
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_()
長按關注公眾號
相關文章: