def show_sheet(self, sheet_name): sheet = self.workbook[sheet_name] rows = sheet.max_row # 清空文本框 self.textbox.delete(1.0, tk.END) # 显示工作表内容 for row in sheet.iter_rows(values_only=True): line = "\t".join([str(cell) for cell in row]) + "\n" self.textbox.insert(tk.END, line) # 创建下拉框并添加到文本框数据内容的后面 for i in range(rows): combobox = tk.ttk.Combobox(self.textbox, values=["下拉选项1", "下拉选项2", "下拉选项3"]) combobox.pack(side=tk.TOP, padx=10, pady=5)修改文本框中下拉輸入框應該與内容對齊
时间: 2023-12-08 17:03:52 浏览: 106
解决pandas .to_excel不覆盖已有sheet的问题
可以使用tkinter的Text控件内置的标签(tag)来实现对齐。具体来说,可以在插入下拉框之前,先在文本框中添加一个与下拉框等宽的空白字符,然后为这个空白字符设置一个标签,并将下拉框的位置设置为该标签的末尾。
修改后的代码如下:
```
def show_sheet(self, sheet_name):
sheet = self.workbook[sheet_name]
rows = sheet.max_row
# 清空文本框
self.textbox.delete(1.0, tk.END)
# 显示工作表内容
for row in sheet.iter_rows(values_only=True):
line = "\t".join([str(cell) for cell in row]) + "\n"
self.textbox.insert(tk.END, line)
# 添加空白字符并设置标签
self.textbox.insert(tk.END, " " * 20, "combobox")
self.textbox.tag_configure("combobox", lmargin1=0, lmargin2=0, rmargin=0, spacing1=0, spacing3=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)
```
其中," " * 20表示添加一个长度为20的空白字符,可以根据需要调整其长度。tag_configure方法用于设置标签的样式,其中各个参数的含义如下:
- lmargin1:标签左边距(第一行)
- lmargin2:标签左边距(其他行)
- rmargin:标签右边距
- spacing1:标签与上一行文本之间的垂直距离
- spacing3:标签与下一行文本之间的垂直距离
将lmargin1、lmargin2和rmargin都设置为0,可以使标签与文本框左右对齐;将spacing1和spacing3都设置为0,可以使标签与周围文本之间没有额外的空白。
阅读全文