main_window.py 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. """
  2. 主窗口模块
  3. """
  4. from PyQt5.QtWidgets import QMainWindow, QTabWidget, QWidget, QVBoxLayout
  5. from PyQt5.QtCore import Qt
  6. from PyQt5.QtGui import QFont
  7. from .weighing_tab import WeighingTab
  8. from .company_tab import CompanyTab
  9. from .cargo_tab import CargoTab
  10. from .purchase_plan_tab import PurchasePlanTab
  11. from database import Database
  12. class MainWindow(QMainWindow):
  13. """主窗口类"""
  14. def __init__(self):
  15. super().__init__()
  16. self.db = Database()
  17. self.init_ui()
  18. def init_ui(self):
  19. """初始化用户界面"""
  20. self.setWindowTitle("地磅称重打印软件")
  21. self.setGeometry(100, 100, 1200, 800)
  22. # 窗口居中显示
  23. self.center_window()
  24. # 设置大字体,适合中老年人使用
  25. font = QFont("微软雅黑", 16)
  26. self.setFont(font)
  27. # 创建Tab页面
  28. self.tab_widget = QTabWidget()
  29. self.tab_widget.setFont(font)
  30. # 创建各个Tab页面
  31. self.purchase_plan_tab = PurchasePlanTab(self.db, main_window=self)
  32. self.weighing_tab = WeighingTab(self.db)
  33. self.company_tab = CompanyTab(self.db)
  34. self.cargo_tab = CargoTab(self.db)
  35. # 添加Tab页面(采购计划放在地磅单前面)
  36. self.tab_widget.addTab(self.purchase_plan_tab, "采购计划")
  37. self.tab_widget.addTab(self.weighing_tab, "地磅单管理")
  38. self.tab_widget.addTab(self.company_tab, "公司维护")
  39. self.tab_widget.addTab(self.cargo_tab, "货物维护")
  40. # 设置Tab页面切换时的回调,用于刷新数据
  41. self.tab_widget.currentChanged.connect(self.on_tab_changed)
  42. # 设置中央部件
  43. self.setCentralWidget(self.tab_widget)
  44. def on_tab_changed(self, index: int):
  45. """Tab页面切换时的回调"""
  46. # 切换到采购计划时,刷新列表
  47. if index == 0: # 采购计划
  48. self.purchase_plan_tab.refresh_list()
  49. # 切换到公司维护或货物维护时,刷新下拉列表
  50. elif index == 2: # 公司维护
  51. self.company_tab.refresh_list()
  52. elif index == 3: # 货物维护
  53. self.cargo_tab.refresh_list()
  54. elif index == 1: # 地磅单管理
  55. # 刷新下拉列表
  56. self.weighing_tab.refresh_dropdowns()
  57. self.weighing_tab.refresh_list()
  58. def center_window(self):
  59. """窗口居中显示"""
  60. from PyQt5.QtWidgets import QDesktopWidget
  61. frame_geometry = self.frameGeometry()
  62. center_point = QDesktopWidget().availableGeometry().center()
  63. frame_geometry.moveCenter(center_point)
  64. self.move(frame_geometry.topLeft())