mirror of
https://github.com/Wanderson-Magalhaes/PyOneDark_Qt_Widgets_Modern_GUI.git
synced 2026-02-17 07:53:57 +00:00
223 lines
8.0 KiB
Python
223 lines
8.0 KiB
Python
# ///////////////////////////////////////////////////////////////
|
|
#
|
|
# BY: WANDERSON M.PIMENTA
|
|
# PROJECT MADE WITH: Qt Designer and PySide6
|
|
# V: 1.0.0
|
|
#
|
|
# This project can be used freely for all uses, as long as they maintain the
|
|
# respective credits only in the Python scripts, any information in the visual
|
|
# interface (GUI) can be modified without any implication.
|
|
#
|
|
# There are limitations on Qt licenses if you want to use your products
|
|
# commercially, I recommend reading them on the official website:
|
|
# https://doc.qt.io/qtforpython/licenses.html
|
|
#
|
|
# ///////////////////////////////////////////////////////////////
|
|
|
|
# IMPORT PACKAGES AND MODULES
|
|
# ///////////////////////////////////////////////////////////////
|
|
from gui.uis.windows.main_window.functions_main_window import *
|
|
import sys
|
|
import os
|
|
|
|
# IMPORT QT CORE
|
|
# ///////////////////////////////////////////////////////////////
|
|
from qt_core import *
|
|
|
|
# IMPORT SETTINGS
|
|
# ///////////////////////////////////////////////////////////////
|
|
from gui.core.json_settings import Settings
|
|
|
|
# IMPORT PY ONE DARK WINDOWS
|
|
# ///////////////////////////////////////////////////////////////
|
|
# MAIN WINDOW
|
|
from gui.uis.windows.main_window import *
|
|
|
|
# IMPORT PY ONE DARK WIDGETS
|
|
# ///////////////////////////////////////////////////////////////
|
|
from gui.widgets import *
|
|
|
|
# ADJUST QT FONT DPI FOR HIGHT SCALE AN 4K MONITOR
|
|
# ///////////////////////////////////////////////////////////////
|
|
os.environ["QT_FONT_DPI"] = "96"
|
|
# IF IS 4K MONITOR ENABLE 'os.environ["QT_SCALE_FACTOR"] = "2"'
|
|
|
|
# MAIN WINDOW
|
|
# ///////////////////////////////////////////////////////////////
|
|
class MainWindow(QMainWindow):
|
|
def __init__(self):
|
|
super().__init__()
|
|
|
|
# SETUP MAIN WINDOw
|
|
# Load widgets from "gui\uis\main_window\ui_main.py"
|
|
# ///////////////////////////////////////////////////////////////
|
|
self.ui = UI_MainWindow()
|
|
self.ui.setup_ui(self)
|
|
|
|
# LOAD SETTINGS
|
|
# ///////////////////////////////////////////////////////////////
|
|
settings = Settings()
|
|
self.settings = settings.items
|
|
|
|
# SETUP MAIN WINDOW
|
|
# ///////////////////////////////////////////////////////////////
|
|
self.hide_grips = True # Show/Hide resize grips
|
|
SetupMainWindow.setup_gui(self)
|
|
|
|
# SHOW MAIN WINDOW
|
|
# ///////////////////////////////////////////////////////////////
|
|
self.show()
|
|
|
|
# LEFT MENU BTN IS CLICKED
|
|
# Run function when btn is clicked
|
|
# Check funtion by object name / btn_id
|
|
# ///////////////////////////////////////////////////////////////
|
|
def btn_clicked(self):
|
|
# GET BT CLICKED
|
|
btn = SetupMainWindow.setup_btns(self)
|
|
|
|
# Remove Selection If Clicked By "btn_close_left_column"
|
|
if btn.objectName() != "btn_settings":
|
|
self.ui.left_menu.deselect_all_tab()
|
|
|
|
# Get Title Bar Btn And Reset Active
|
|
top_settings = MainFunctions.get_title_bar_btn(self, "btn_top_settings")
|
|
top_settings.set_active(False)
|
|
|
|
# LEFT MENU
|
|
# ///////////////////////////////////////////////////////////////
|
|
|
|
# HOME BTN
|
|
if btn.objectName() == "btn_home":
|
|
# Select Menu
|
|
self.ui.left_menu.select_only_one(btn.objectName())
|
|
|
|
# Load Page 1
|
|
MainFunctions.set_page(self, self.ui.load_pages.page_1)
|
|
|
|
# WIDGETS BTN
|
|
if btn.objectName() == "btn_widgets":
|
|
# Select Menu
|
|
self.ui.left_menu.select_only_one(btn.objectName())
|
|
|
|
# Load Page 2
|
|
MainFunctions.set_page(self, self.ui.load_pages.page_2)
|
|
MainFunctions.set_right_column_menu(self, self.ui.right_column.menu_1)
|
|
|
|
# LOAD USER PAGE
|
|
if btn.objectName() == "btn_add_user":
|
|
# Select Menu
|
|
self.ui.left_menu.select_only_one(btn.objectName())
|
|
|
|
# Load Page 3
|
|
MainFunctions.set_page(self, self.ui.load_pages.page_3)
|
|
|
|
# BOTTOM INFORMATION
|
|
if btn.objectName() == "btn_info":
|
|
# CHECK IF LEFT COLUMN IS VISIBLE
|
|
if not MainFunctions.left_column_is_visible(self):
|
|
self.ui.left_menu.select_only_one_tab(btn.objectName())
|
|
|
|
# Show / Hide
|
|
MainFunctions.toggle_left_column(self)
|
|
self.ui.left_menu.select_only_one_tab(btn.objectName())
|
|
else:
|
|
if btn.objectName() == "btn_close_left_column":
|
|
self.ui.left_menu.deselect_all_tab()
|
|
# Show / Hide
|
|
MainFunctions.toggle_left_column(self)
|
|
|
|
self.ui.left_menu.select_only_one_tab(btn.objectName())
|
|
|
|
# Change Left Column Menu
|
|
if btn.objectName() != "btn_close_left_column":
|
|
MainFunctions.set_left_column_menu(
|
|
self,
|
|
menu = self.ui.left_column.menus.menu_2,
|
|
title = "Info tab",
|
|
icon_path = Functions.set_svg_icon("icon_info.svg")
|
|
)
|
|
|
|
# SETTINGS LEFT
|
|
if btn.objectName() == "btn_settings" or btn.objectName() == "btn_close_left_column":
|
|
# CHECK IF LEFT COLUMN IS VISIBLE
|
|
if not MainFunctions.left_column_is_visible(self):
|
|
# Show / Hide
|
|
MainFunctions.toggle_left_column(self)
|
|
self.ui.left_menu.select_only_one_tab(btn.objectName())
|
|
else:
|
|
if btn.objectName() == "btn_close_left_column":
|
|
self.ui.left_menu.deselect_all_tab()
|
|
# Show / Hide
|
|
MainFunctions.toggle_left_column(self)
|
|
self.ui.left_menu.select_only_one_tab(btn.objectName())
|
|
|
|
# Change Left Column Menu
|
|
if btn.objectName() != "btn_close_left_column":
|
|
MainFunctions.set_left_column_menu(
|
|
self,
|
|
menu = self.ui.left_column.menus.menu_1,
|
|
title = "Settings Left Column",
|
|
icon_path = Functions.set_svg_icon("icon_settings.svg")
|
|
)
|
|
|
|
# TITLE BAR MENU
|
|
# ///////////////////////////////////////////////////////////////
|
|
|
|
# SETTINGS TITLE BAR
|
|
if btn.objectName() == "btn_top_settings":
|
|
# Toogle Active
|
|
if not MainFunctions.right_column_is_visible(self):
|
|
btn.set_active(True)
|
|
|
|
# Show / Hide
|
|
MainFunctions.toggle_right_column(self)
|
|
else:
|
|
btn.set_active(False)
|
|
|
|
# Show / Hide
|
|
MainFunctions.toggle_right_column(self)
|
|
|
|
# Get Left Menu Btn
|
|
top_settings = MainFunctions.get_left_menu_btn(self, "btn_settings")
|
|
top_settings.set_active_tab(False)
|
|
|
|
# DEBUG
|
|
print(f"Button {btn.objectName()}, clicked!")
|
|
|
|
# LEFT MENU BTN IS RELEASED
|
|
# Run function when btn is released
|
|
# Check funtion by object name / btn_id
|
|
# ///////////////////////////////////////////////////////////////
|
|
def btn_released(self):
|
|
# GET BT CLICKED
|
|
btn = SetupMainWindow.setup_btns(self)
|
|
|
|
# DEBUG
|
|
print(f"Button {btn.objectName()}, released!")
|
|
|
|
# RESIZE EVENT
|
|
# ///////////////////////////////////////////////////////////////
|
|
def resizeEvent(self, event):
|
|
SetupMainWindow.resize_grips(self)
|
|
|
|
# MOUSE CLICK EVENTS
|
|
# ///////////////////////////////////////////////////////////////
|
|
def mousePressEvent(self, event):
|
|
# SET DRAG POS WINDOW
|
|
self.dragPos = event.globalPos()
|
|
|
|
|
|
# SETTINGS WHEN TO START
|
|
# Set the initial class and also additional parameters of the "QApplication" class
|
|
# ///////////////////////////////////////////////////////////////
|
|
if __name__ == "__main__":
|
|
# APPLICATION
|
|
# ///////////////////////////////////////////////////////////////
|
|
app = QApplication(sys.argv)
|
|
app.setWindowIcon(QIcon("icon.ico"))
|
|
window = MainWindow()
|
|
|
|
# EXEC APP
|
|
# ///////////////////////////////////////////////////////////////
|
|
sys.exit(app.exec_()) |