class ExcelApp: def init(self, master): self.master = master master.title("Excel App") # 创建菜单栏 menubar = tk.Menu(master) master.config(menu=menubar) # 创建文件菜单及其子菜单 filemenu = tk.Menu(menubar, tearoff=0) filemenu.add_command(label="PA綫點檢表", command=lambda: self.load_excel("D:\點檢系統存放資料夾\點檢明細\點檢内容明細.xlsx")) filemenu.add_command(label="Excel 2", command=lambda: self.load_excel("excel2.xlsx")) filemenu.add_command(label="Excel 3", command=lambda: self.load_excel("excel3.xlsx")) menubar.add_cascade(label="文件", menu=filemenu) # 创建帮助菜单及其子菜单 helpmenu = tk.Menu(menubar, tearoff=0) helpmenu.add_command(label="关于", command=self.show_about) menubar.add_cascade(label="帮助", menu=helpmenu) # 创建工具栏 toolbar = tk.Frame(master, height=30) tk.Button(toolbar, text="打开", command=self.open_file).pack(side=tk.LEFT, padx=2, pady=2) tk.Button(toolbar, text="保存", command=self.save_to_excel).pack(side=tk.LEFT, padx=2, pady=2) toolbar.pack(side=tk.TOP, fill=tk.X)# 创建文本框 text_frame = tk.Frame(self.panel_right) text_frame.pack(side=tk.TOP, fill=tk.BOTH, expand=True) self.textbox = tk.Text(text_frame) self.textbox.pack(side=tk.TOP, fill=tk.BOTH, expand=True) def show_sheet(self, sheet_name): self.textbox.tag_configure("left", justify="left") sheet = self.workbook[sheet_name] rows = sheet.max_row # 清空文本框 self.textbox.delete(1.0, tk.END) # 添加表名并设置居中标签 self.textbox.insert(tk.END, sheet_name + ":\n", "center") # 显示工作表内容,并在相应数据后面添加下拉输入框 for row in sheet.iter_rows(values_only=True): for i, cell in enumerate(row): line = str(cell) + "\t" if i == 0: # 在第一列数据后面添加下拉输入框 combobox = tk.ttk.Combobox(self.textbox, values=["下拉选项1", "下拉选项2", "下拉选项3"]) combobox.pack(side=tk.TOP, padx=10, pady=5) self.textbox.window_create(tk.END, window=combobox) self.textbox.insert(tk.END, line, "left") self.textbox.insert(tk.END, "\n") # 设置居中标签的样式 self.textbox.tag_configure("center", justify="center", font=("Arial", 14, "bold"))根據第二個函數將文本框中所有數據和下拉輸入框中的值按列循環寫入一個excel中保存
时间: 2023-10-31 11:04:10 浏览: 62
可以使用openpyxl库来实现将文本框中的数据和下拉输入框中的值按列循环写入一个Excel中保存。具体步骤如下:
1. 导入openpyxl库:
```python
import openpyxl
```
2. 创建一个新的Excel文件:
```python
wb = openpyxl.Workbook()
```
3. 获取第一个工作表:
```python
ws = wb.active
```
4. 获取文本框中的数据和下拉输入框中的值,并按列循环写入工作表中:
```python
for i in range(1, self.textbox.index(tk.END).split(".")[0]): # 获取文本框中行数
row_values = [] # 存储每一行的值
combobox_values = [] # 存储每一行下拉输入框中
相关问题
class ExcelApp: def __init__(self, master): self.master = master master.title("Excel App") master.state('zoomed')#窗口最大化 # 创建菜单栏 menubar = tk.Menu(master) master.config(menu=menubar)修改這個窗口根據每臺電腦的分辨率來窗口最大化
可以通过获取屏幕分辨率来实现窗口最大化。可以使用tkinter库中的`winfo_screenwidth()`和`winfo_screenheight()`方法来获取屏幕分辨率,并将窗口大小设置为屏幕大小。下面是修改后的代码:
```
import tkinter as tk
class ExcelApp:
def __init__(self, master):
self.master = master
master.title("Excel App")
master.geometry('{}x{}'.format(master.winfo_screenwidth(), master.winfo_screenheight())) # 获取屏幕分辨率并设置窗口大小
# 创建菜单栏
menubar = tk.Menu(master)
master.config(menu=menubar)
```
这样,无论在哪台电脑上运行,窗口都会自动最大化。
class ExcelApp: def __init__(self, master): self.master = master master.title("Excel App") # 获取屏幕的宽度和高度 screen_width = master.winfo_screenwidth() screen_height = master.winfo_screenheight() # 将窗口的大小设置为屏幕的大小 master.geometry("%dx%d" % (screen_width, screen_height)) master.state('zoomed')#窗口最大化 # 创建菜单栏 menubar = tk.Menu(master) master.config(menu=menubar)# 创建左侧面板 self.panel_left = tk.Frame(master, width=150, bg='lightcyan') self.panel_left.pack(side=tk.LEFT, fill=tk.Y)怎麽在這個代碼中的左側面板添加垂直滾動條,來滾動生成的數據
您可以使用 `tk.Scrollbar` 和 `tk.Canvas` 来实现这个功能。首先,您需要在左侧面板中添加一个 `tk.Canvas` 组件,并将其放置在一个 `tk.Frame` 中。然后,您可以创建一个 `tk.Scrollbar` 组件,并将其与 `tk.Canvas` 组件绑定在一起。最后,您需要配置 `tk.Canvas` 组件以使用垂直滚动条并启用滚动功能。
下面是添加垂直滚动条的示例代码:
``` python
class ExcelApp:
def __init__(self, master):
self.master = master
master.title("Excel App")
# 获取屏幕的宽度和高度
screen_width = master.winfo_screenwidth()
screen_height = master.winfo_screenheight()
# 将窗口的大小设置为屏幕的大小
master.geometry("%dx%d" % (screen_width, screen_height))
master.state('zoomed') # 窗口最大化
# 创建菜单栏
menubar = tk.Menu(master)
master.config(menu=menubar)
# 创建左侧面板
self.panel_left = tk.Frame(master, width=150, bg='lightcyan')
self.panel_left.pack(side=tk.LEFT, fill=tk.Y)
# 在左侧面板中添加一个 Canvas 和 Scrollbar 组件
self.canvas = tk.Canvas(self.panel_left, width=150, bg='lightcyan')
self.scrollbar = tk.Scrollbar(self.panel_left, orient=tk.VERTICAL, command=self.canvas.yview)
self.scrollbar.pack(side=tk.RIGHT, fill=tk.Y)
self.canvas.pack(side=tk.LEFT, fill=tk.BOTH, expand=1)
self.canvas.config(yscrollcommand=self.scrollbar.set)
# 在 Canvas 中添加一些文本框
for i in range(100):
self.canvas.create_text(75, i*20, text=f"Text {i}", font=('Arial', 12))
```
在这个示例中,我们首先创建了一个 `tk.Canvas` 组件和一个 `tk.Scrollbar` 组件,并将它们添加到了左侧面板中。然后,我们将 `tk.Scrollbar` 组件的 `command` 属性设置为 `tk.Canvas` 组件的 `yview` 方法,这样当用户滚动滚动条时,`tk.Canvas` 组件就会相应地滚动。最后,我们使用 `tk.Canvas` 的 `create_text` 方法在 Canvas 中添加了一些文本框,以便测试滚动条是否正常工作。
注意,上述代码只是一个示例,您需要根据您的实际需求进行调整和修改。
阅读全文