1. 设计Manager类、GUI类及事件处理 (1)设计一个Manager类并编写代码, Manager类的属性有姓名,工号,基本工资,小时工资(元/小时)。自定义方法:至少包括计算月工资的方法:calSalary()。 (2)编写一个GUI类,输入manager的姓名、工号,基本工资,月工作时间(小时),创建对象,调用calSalary()方法计算出该manager的月工资,并显示在用户界面上。
时间: 2024-02-22 21:56:42 浏览: 27
好的,我会尽力回答你的问题。
首先是Manager类的实现,代码如下:
```python
class Manager:
def __init__(self, name, id, salary, hour_salary):
self.name = name
self.id = id
self.salary = salary
self.hour_salary = hour_salary
def calSalary(self, hours):
return self.salary + hours * self.hour_salary
```
Manager类有四个属性:姓名(name)、工号(id)、基本工资(salary)、小时工资(hour_salary),以及一个计算月工资的方法calSalary()。该方法接受一个参数hours,表示本月工作的小时数,根据小时工资和基本工资计算出该manager的月工资并返回。
接下来是GUI类的实现,代码如下:
```python
import tkinter as tk
from tkinter import messagebox
class GUI:
def __init__(self, master):
self.master = master
master.title("Manager Salary Calculator")
self.name_label = tk.Label(master, text="Name:")
self.name_label.grid(row=0, column=0, padx=10, pady=10)
self.name_entry = tk.Entry(master)
self.name_entry.grid(row=0, column=1, padx=10, pady=10)
self.id_label = tk.Label(master, text="ID:")
self.id_label.grid(row=1, column=0, padx=10, pady=10)
self.id_entry = tk.Entry(master)
self.id_entry.grid(row=1, column=1, padx=10, pady=10)
self.salary_label = tk.Label(master, text="Salary:")
self.salary_label.grid(row=2, column=0, padx=10, pady=10)
self.salary_entry = tk.Entry(master)
self.salary_entry.grid(row=2, column=1, padx=10, pady=10)
self.hours_label = tk.Label(master, text="Working Hours:")
self.hours_label.grid(row=3, column=0, padx=10, pady=10)
self.hours_entry = tk.Entry(master)
self.hours_entry.grid(row=3, column=1, padx=10, pady=10)
self.calculate_button = tk.Button(master, text="Calculate", command=self.calculate)
self.calculate_button.grid(row=4, column=0, padx=10, pady=10)
self.result_label = tk.Label(master, text="")
self.result_label.grid(row=4, column=1, padx=10, pady=10)
def calculate(self):
name = self.name_entry.get()
id = self.id_entry.get()
salary = float(self.salary_entry.get())
hours = float(self.hours_entry.get())
manager = Manager(name, id, salary, 100) # 假设小时工资为100元
result = manager.calSalary(hours)
self.result_label.config(text="Salary: {:.2f} yuan".format(result))
```
GUI类继承自tkinter模块的Tk类,实现了一个简单的用户界面,包括四个输入框和一个计算按钮,以及一个用于显示结果的标签。
计算按钮的回调函数calculate()获取输入框中的值,创建Manager对象并调用其calSalary()方法计算月工资,最后将结果显示在标签中。
以上就是Manager类和GUI类的实现了,你可以将这两段代码保存到两个不同的文件中,然后在主程序中导入并运行GUI类即可。