import tkinter as tk from openpyxl import load_workbook from tkinter import messagebox # 读取Excel表格数据 wb = load_workbook(filename=r'C:\Users\bing3_chen\Desktop\1.xlsx') ws = wb['總表'] # 创建GUI窗口 window = tk.Tk() window.title('物料进出库管理') window.geometry('400x200') # 进货函数 def add_inventory(): # 获取物料名称和数量 name = name_entry.get() quantity = int(quantity_entry.get()) # 查找相同名称的数据并进行加操作 found = False for row in ws.iter_rows(min_row=2, values_only=True): if row[0] == name: row[1] += quantity found = True break if not found: ws.append([name, quantity]) # 将修改后的数据写回Excel表格 wb.save(filename=r'C:\Users\bing3_chen\Desktop\1.xlsx') # 清空文本框 name_entry.delete(0, tk.END) quantity_entry.delete(0, tk.END) # 出货函数 def remove_inventory(): # 获取物料名称和数量 name = name_entry.get() quantity = int(quantity_entry.get()) # 查找相同名称的数据并进行减操作 found = False for row in ws.iter_rows(min_row=2, values_only=True): if row[0] == name: if row[1] >= quantity: row[1] -= quantity found = True else: messagebox.showerror('Error', '物料不足!') return if not found: messagebox.showerror('Error', '物料不存在!') return # 将修改后的数据写回Excel表格 wb.save(filename=r'C:\Users\bing3_chen\Desktop\1.xlsx') # 清空文本框 name_entry.delete(0, tk.END) quantity_entry.delete(0, tk.END) # 添加控件 tk.Label(window, text='物料名称:').grid(row=0, column=0) name_entry = tk.Entry(window) name_entry.grid(row=0, column=1) tk.Label(window, text='物料数量:').grid(row=1, column=0) quantity_entry = tk.Entry(window) quantity_entry.grid(row=1, column=1) tk.Button(window, text='进货', command=add_inventory).grid(row=2, column=0) tk.Button(window, text='出货', command=remove_inventory).grid(row=2, column=1) window.mainloop()
时间: 2024-01-18 15:04:59 浏览: 76
这段代码存在一个语法错误。在第一行代码中,使用了两个独立的语句,但是没有使用分号或换行符将它们分开。正确的方式是使用换行符或分号分开这两个语句。你可以将第一行代码修改为以下任意一种形式:
1. 使用换行符:
```
import tkinter as tk
from openpyxl import load_workbook
from tkinter import messagebox
```
2. 使用分号:
```
import tkinter as tk; from openpyxl import load_workbook; from tkinter import messagebox
```
此外,还需要确保已经安装了 `openpyxl` 和 `tkinter` 库。如果你没有安装这些库,请先安装它们,然后再运行代码。
相关问题
import tkinter import windnd import os.path from pathlib import Path from tkinter import * import tkinter.messagebox import tkinter.filedialog from openpyxl import load_workbook workbook=load_workbook(filename='demo.xlsx') root=tkinter.Tk() root.title('测试') root.geometry('520x200') root.resizable(False,False) kk={1:'Sheet1',2:'Sheet2'} filepath00=tkinter.Entry() filepath00.grid(row=1,column=2) print(kk[1]) k=filepath00.get() def oo(): kkk=kk[k] print(kkk) bb=Button(root,text='提取',command=oo) bb.grid(row=1,column=3)
这段代码存在一些问题。首先,在导入模块的时候,应该使用逗号分隔,如`import tkinter, windnd, os.path`。其次,在使用`load_workbook`函数加载Excel文件时,应该指定文件路径,如`workbook=load_workbook(filename='demo.xlsx')`。此外,`kk[1]`和`filepath00.get()`的值都为字符串类型,不能直接作为字典的键值使用,需要转换成整型,如`kk[int(k)]`。最后,`kk`字典的值应该是字符串类型的Excel表格名称,而不是数字,如`kk={'Sheet1':'表格1','Sheet2':'表格2'}`。建议在编写代码时注意这些细节问题。
import numpy as np import math import matplotlib.pyplot as plt import tkinter as tk import tkinter.messagebox import pandas as pd from openpyxl import load_workbook from warnings import simplefilter engine_torque = 10 i0 = 2.088 i1 = 2.928 ig = 2.929 efficiency = 0.96 Wheel_radius = 0.3059 slope = 0 #坡度单位弧度 slope_cos = math.cos(slope) slope_sin = math.sin(slope) rolling_resistance_coefficient = 0.01 air_coefficient = 0.28 face_area = 0.4 air_density = 1.2258 vehicle_speed = 0 weight = 268 step_size = 0.01 flag = 0 time = 0 vehicle_speed_plot = [] time_plot = [] def drive_force(engine_torque,i0,i1,ig,efficiency,Wheel_radius): drive_force = engine_torque*i0*ig*i1*efficiency/Wheel_radius return drive_force def rolling_resistance(weight,rolling_resistance_coefficient,slope_cos): rolling_resistance = weight*rolling_resistance_coefficient*slope_cos return rolling_resistance def air_resistance(air_coefficient,face_area,air_density,relative_speed): air_resistance = 0.5*air_coefficient*face_area*air_density*relative_speed*relative_speed return air_resistance def grade_resistance(weight,slope_sin): grade_resistance = weight*slope_sin return grade_resistance while flag==0: relative_speed = vehicle_speed vehicle_acclerate = (drive_force(engine_torque,i0,i1,ig,efficiency,Wheel_radius)-rolling_resistance(weight,rolling_resistance_coefficient,slope_cos)-air_resistance(air_coefficient,face_area,air_density,relative_speed))/weight vehicle_speed = vehicle_acclerate*step_size+vehicle_speed running_distance = relative_speed*step_size+0.5*vehicle_acclerate*step_size*step_size time = time+step_size if time == 10: flag = 1 vehicle_speed_plot.append(vehicle_speed) time_plot.append(time)
这段代码使用了多个变量和函数来计算车辆在直线道路上的行驶情况。具体来说,代码的主要功能是根据车辆的动力、阻力和坡度等因素来计算车辆在直线道路上的运动状态,并将结果存储在列表中以便后续使用。
代码中的变量和函数的含义如下:
- engine_torque:发动机扭矩
- i0、i1、ig:传动系数
- efficiency:传动效率
- Wheel_radius:车轮半径
- slope:坡度
- slope_cos、slope_sin:坡度的余弦值和正弦值
- rolling_resistance_coefficient:滚动阻力系数
- air_coefficient:空气阻力系数
- face_area:车辆正面面积
- air_density:空气密度
- vehicle_speed:车辆速度
- weight:车辆重量
- step_size:时间步长
- flag:循环标志,初始值为 0
- time:当前时间,初始值为 0
- vehicle_speed_plot:车辆速度列表
- time_plot:时间列表
代码中的函数包括:
- drive_force:计算车辆的驱动力
- rolling_resistance:计算车辆的滚动阻力
- air_resistance:计算车辆的空气阻力
- grade_resistance:计算车辆的坡度阻力
代码的主体部分是一个 while 循环,当 flag 等于 0 时,会一直循环下去。每次循环时,根据车辆的动力、阻力和坡度等因素来计算车辆的速度和加速度,并更新列表中的数据。当时间达到 10 秒时,循环停止。
最后,代码中使用了 numpy、math、matplotlib.pyplot、tkinter、pandas 和 openpyxl 等模块来实现各种功能。
阅读全文