網站首頁 編程語言 正文
首先,講述要解決的兩個問題以及解決問題的代碼:
1、將鼠標放置于菜單欄上狀態欄永久消失的問題(這個問題需要仔細觀察才能注意到)
# 此覆蓋父類函數: 覆蓋方法; 為了克服 將鼠標放置于菜單欄上 狀態欄就消失的問題;
def event(self, QEvent):
if QEvent.type() == QEvent.StatusTip:
if QEvent.tip() == "":
QEvent = QStatusTipEvent("ready!") # 此處為要始終顯示的內容
return super().event(QEvent)
2、控制狀態欄顯示和隱藏的問題
def toggleMenu(self, state): # 自定義事件函數
print(state)
# if state:
# self.statusBar().showMessage("ready!")
# else:
# self.statusBar().showMessage("")
# if state: # 控制狀態欄是否顯示,
# self.statusbar().show() # 此處是錯誤示例
# else:
# self.statusbar().hide()
if state: # 應該使用statusBar() 而不是 statusbar
self.statusBar().show()
else:
self.statusBar().hide()
最近學習pyqt5教程,也是別人翻譯的,總的也是錯誤多多,應該直接看原版的,充分表明英語很重要啊……
貼上全部代碼:
import sys
from PyQt5.QtWidgets import QMainWindow, QApplication, QAction, qApp, QMenu
from PyQt5.QtGui import QIcon, QStatusTipEvent
class main_window(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
# 可以設置 動作的圖標, 文字顯示; 強大
exitAct = QAction(QIcon("/Users/zuozhe/PycharmProjects/Soft-Video/images/m4.png"), "&退出", self)
exitAct.setShortcut("Ctrl+Q") # 設置快捷鍵
exitAct.setToolTip("Exit Application") # 提示
exitAct.triggered.connect(qApp.exit) # 綁定退出事件
status = self.statusBar() # 創建狀態欄
status.showMessage("ready!") # 顯示消息
# 菜單欄
# 文件菜單欄
menubar = self.menuBar()
menubar.setNativeMenuBar(False) # MAC OS 下需要設置此句話
fileMenu = menubar.addMenu("&File") # 主菜單File
impMenu = QMenu("Import", self) # 創建菜單項
impAct = QAction("Import Email", self) # Import菜單下有子菜單 Import Email
impMenu.addAction(impAct)
newAct = QAction("New", self)
# 就差 給 Action(動作)綁定觸發事件了
fileMenu.addAction(newAct) # 將兩個菜單項加入到 File主菜單欄下
fileMenu.addMenu(impMenu)
fileMenu.addAction(exitAct) # 綁定 File下的菜單項
# 編輯菜單欄
editMenu = menubar.addMenu("&Edit")
# 視圖菜單欄
viewMenu = menubar.addMenu("&View")
# 勾選菜單
viewstatAct = QAction("是否顯示狀態欄", self, checkable=True)
viewstatAct.setToolTip("View statusbar")
viewstatAct.setChecked(True)
viewstatAct.triggered.connect(self.toggleMenu) # 觸發鏈接事件; toggleMenu是自定義函數
viewMenu.addAction(viewstatAct)
# 設置窗口的 位置和大小
self.setGeometry(300, 300, 500, 600)
self.setWindowTitle("主窗口的菜單欄和工具欄")
self.show()
# 此覆蓋父類函數: 覆蓋方法; 為了克服 將鼠標放置于菜單欄上 狀態欄就消失的問題;
def event(self, QEvent):
if QEvent.type() == QEvent.StatusTip:
if QEvent.tip() == "":
QEvent = QStatusTipEvent("ready!") # 此處為要始終顯示的內容
return super().event(QEvent)
def toggleMenu(self, state): # 自定義事件函數
print(state)
# if state:
# self.statusBar().showMessage("ready!")
# else:
# self.statusBar().showMessage("")
# if state: # 控制狀態欄是否顯示,
# self.statusbar().show()
# else:
# self.statusbar().hide()
if state: # 應該使用statusBar() 而不是 statusbar
self.statusBar().show()
else:
self.statusBar().hide()
if __name__ == "__main__":
app = QApplication(sys.argv)
window = main_window()
sys.exit(app.exec_())
原文鏈接:https://blog.csdn.net/qq_23944915/article/details/87925719
相關推薦
- 2022-08-22 Git配置別名簡化操作命令方式詳解_相關技巧
- 2023-01-02 C語言中getchar(?)?函數使用詳解_C 語言
- 2024-01-13 SpringCloud Alibaba——Nacos1.x配置中心長輪詢機制
- 2022-01-30 h5 uniapp history模式下刷新頁面404
- 2022-09-21 Golang?channel為什么不會阻塞的原因詳解_Golang
- 2022-04-02 vscode?采用C++17版本進行編譯的實現_C 語言
- 2022-10-21 Go錯誤和異常CGO?fallthrough處理教程詳解_Golang
- 2023-03-17 Python控制windows系統音量實現實例_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支