iT邦幫忙

2024 iThome 鐵人賽

DAY 8
0
Python

pythonGUI學習筆記系列 第 8

Day 8 PySide6 實作簡易記事本

  • 分享至 

  • xImage
  •  

目標

  • 結合前幾天學的元件,做出一個簡易的記事本

1.用到的元件

  • QMainWindow : 的窗口類別,提供了標準的應用程式窗口框架,包含菜單欄、工具欄、狀態欄等。這個類別讓我們可以輕鬆地管理整個應用程式的界面結構。

  • QMenuBar : 用來建立應用程式的功能菜單,我們可以在菜單中添加操作項,像是打開文件、保存文件等功能,並連接到對應的事件處理函數。

  • QAction : 菜單中的一個操作項,使用者點擊後會觸發對應的事件。在這裡,我們使用 QAction 來為菜單欄添加具體的功能,比如打開文件、保存文件和退出應用程式。

  • QFileDialog : 標準的文件對話框,允許使用者打開或保存文件。在這個專案中,會用來實現記事本的文件開啟和保存功能。

  • QPlainTextEdit : 多行文本編輯器,可以用來顯示和編輯大段的純文本,適合用來構建簡單的文字編輯器功能。透過它,實現記事本的主要功能。

2.實作

  • 第一步先設置窗口名稱大小和文字輸入框。
# 設置窗口尺寸和名稱
self.setWindowTitle("Notepad")
Self.setGeometry(100,100,800,600)

# 創建文字輸入框
self.text_edit = QPlainTextEdit(self)

 #將文字輸入框設置在窗口中心,大小會隨窗口自動調整
self.setCentralWidget(self.text_edit)
self.text_edit.setStyleSheet("""
        QTextEdit {
            border: 2px solid #4CAF50;
            border-radius: 5px;
            padding: 5px;
        }
""")
  • 第二步,設這窗口上方的菜單,使用 QMenuBar 建立一個菜單欄,然後為文件菜單添加三個操作項打開文件、保存文件和退出。操作項透過 QAction 定義,並與槽函數連接。
#創建菜單和功能
menu_bar = self.menuBar()
file_menu = menu_bar.addMenu("文件")

open_action = QAction("打開文件",self)
open_action.triggered.connect(self.open_file)
file_menu.addAction(open_action)

save_action = QAction("保存文件",self)
save_action.triggered.connect(self.save_file)
file_menu.addAction(save_action)

exit_action = QAction("退出",self)
exit_action.triggered.connect(self.close)
file_menu.addAction(exit_action)
  • 第三步,使用 QFileDialog 實現打開文件、保存文件和退出。可以使用 toPlainText() 取得文字輸入框裡的內容。
# 打開文件,並限定檔案類型.txt
def open_file(self):
    file_path , _ = QFileDialog.getOpenFileName(self, "打開文件" ,".","文本文件(*.txt)")
    #確定是否有選定文件路徑
    if file_path:
        with open(file_path,'r',encoding='utf-8') as file:
            self.text_edit.setPlainText(file.read())

# 保存文件,並限定檔案類型.txt
def save_file(self):
    file_path, _ = QFileDialog.getSaveFileName(self, "保存文件", "", "文本文件 (*.txt)")
    #確定是否有選定文件路徑
    if file_path:
        with open(file_path, 'w', encoding='utf-8') as file:
            file.write(self.text_edit.toPlainText())

  • 編譯結果
    結果圖

總結

  • 通過這個簡單的記事本應用程式,把之前的元件融合再一起,做複習運用。

上一篇
Day 7: PySide6 兩個文本框 QTextEdit 和 QPlainTextEdit
下一篇
Day 9: PySide6 下拉選單 (QComboBox)
系列文
pythonGUI學習筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言