def show_data(self, sheet_name): try: # 读取工作表中第一列所有数据 df = pd.read_excel(self.file_name, sheet_name=sheet_name, usecols=[0]) # 清空日志框 self.log_text.delete(1.0, tk.END) # 创建一个Frame来包含每个数据内容和相应的下拉框/滑动条 frame_list = [] for column_name in df.iloc[:, 0]: frame = tk.Frame(self.log_text) frame.pack(side=tk.TOP, fill=tk.X, padx=10, pady=(5, 0)) label = tk.Label(frame, text=f"{df.columns[0]}: ") label.pack(side=tk.LEFT) # 遍历每一行,获取该列的数据并更新下拉框/滑动条的取值范围 column_data = df[column_name].values if isinstance(column_data.iloc[0], (int, float)): scale = ttk.Scale(frame, from_=0, to=column_data.max(), orient=tk.HORIZONTAL) scale.pack(side=tk.RIGHT, fill=tk.X, expand=True) elif isinstance(column_data.iloc[0], str): combobox = ttk.Combobox(frame, values=column_data.unique(), width=20) combobox.pack(side=tk.RIGHT, fill=tk.X, expand=True) frame_list.append(frame) except Exception as e: self.log_text.delete(1.0, tk.END) self.log_text.insert(tk.END, str(e) + "\n")這句代碼日志框中數據内容遮擋了下拉輸入框
时间: 2023-12-02 13:06:02 浏览: 67
mempool_hook_userdef_0924
可以尝试将下拉框/滑动条的Frame设置为log_text的子控件,而不是包含在log_text的每个Frame中,这样下拉框/滑动条的Frame就会在log_text的上层,不会被数据内容遮挡。可以将以下修改加入代码中:
将每个frame的父控件从self.log_text改为一个新的Frame:
```python
frame = tk.Frame(self)
```
将每个frame内的控件打包到该frame中:
```python
label.pack(side=tk.LEFT)
scale.pack(side=tk.RIGHT, fill=tk.X, expand=True)
```
最后再将frame打包到log_text中:
```python
frame.pack(side=tk.TOP, fill=tk.X, padx=10, pady=(5, 0))
```
阅读全文