如何截取list里的数据放到Python gui 的text里
时间: 2023-12-10 17:40:41 浏览: 54
你可以使用Python的Tkinter库来创建GUI界面,并将列表中的数据放入文本框中。以下是一个简单的示例代码:
```python
import tkinter as tk
# 创建GUI窗口
root = tk.Tk()
# 创建文本框
text = tk.Text(root)
text.pack()
# 创建列表并填充数据
my_list = ['apple', 'banana', 'cherry', 'date']
# 将列表中的数据放入文本框中
for item in my_list:
text.insert(tk.END, item + '\n')
# 运行GUI窗口
root.mainloop()
```
在上面的代码中,我们首先导入了Tkinter库,然后创建了一个GUI窗口。接下来,我们创建了一个文本框并调用pack()方法将其添加到窗口中。
然后,我们创建了一个列表,并使用for循环遍历列表中的每个元素。在循环中,我们使用text.insert()方法将列表中的每个元素插入到文本框中。最后,我们使用root.mainloop()方法运行GUI窗口。
当你运行这段代码时,你会看到一个包含列表中所有元素的文本框。
相关问题
python寫一個gui窗口一個菜單欄,菜單欄名字叫PA,這個PA連接一個excel,儅用戶點擊PA時把這個excel中所有的工作表名打印在窗口中生成按鈕靠左邊擺放,再在下方生成日志框,儅點擊這些按鈕時可以讀取相應工作表中的一列數據放在日志框中並在數據後面添加下拉輸入框,再根據數據内容自動添加滑動條,
以下是实现该功能的示例代码:
```python
import tkinter as tk
import pandas as pd
from tkinter import ttk
class App(tk.Tk):
def __init__(self, file_name):
super().__init__()
self.file_name = file_name
self.title("PA")
# 创建菜单栏
self.menubar = tk.Menu(self)
self.config(menu=self.menubar)
# 创建菜单项
self.file_menu = tk.Menu(self.menubar, tearoff=0)
self.file_menu.add_command(label="Open", command=self.load_excel)
self.menubar.add_cascade(label="PA", menu=self.file_menu)
# 创建工作表名字的列表
self.sheet_names = []
# 创建按键的列表
self.buttons = []
# 创建日志框和滑动条
self.log_text = tk.Text(self, height=10)
self.scrollbar = tk.Scrollbar(self, command=self.log_text.yview)
self.log_text.configure(yscrollcommand=self.scrollbar.set)
# 布局
self.log_text.pack(side=tk.BOTTOM, fill=tk.BOTH, expand=True)
self.scrollbar.pack(side=tk.RIGHT, fill=tk.Y)
def load_excel(self):
try:
# 读取excel文件
df = pd.read_excel(self.file_name, sheet_name=None)
self.sheet_names = list(df.keys())
# 创建按键并添加到窗口中
for i, sheet_name in enumerate(self.sheet_names):
button = ttk.Button(self, text=sheet_name, command=lambda sheet_name=sheet_name: self.show_data(sheet_name))
button.pack(side=tk.LEFT, padx=10)
self.buttons.append(button)
except Exception as e:
self.log_text.insert(tk.END, str(e) + "\n")
def show_data(self, sheet_name):
try:
# 读取工作表中一行数据
df = pd.read_excel(self.file_name, sheet_name=sheet_name)
row = df.iloc[0]
# 在日志框中显示数据
self.log_text.delete(1.0, tk.END)
for i, column_name in enumerate(df.columns):
self.log_text.insert(tk.END, f"{column_name}: {row[column_name]}\n")
# 根据数据内容自动添加下拉框和滑动条
if isinstance(row[column_name], (int, float)):
scale = ttk.Scale(self, from_=0, to=row[column_name], orient=tk.HORIZONTAL)
scale.pack(side=tk.TOP, fill=tk.X, padx=10)
elif isinstance(row[column_name], str):
combobox = ttk.Combobox(self, values=["Option 1", "Option 2", "Option 3"])
combobox.pack(side=tk.TOP, fill=tk.X, padx=10)
except Exception as e:
self.log_text.insert(tk.END, str(e) + "\n")
# 测试代码
app = App("example.xlsx")
app.mainloop()
```
在这个示例中,我们使用了 Python 自带的 tkinter 库来创建 GUI 窗口。首先,我们创建了一个名为 App 的类,继承了 tkinter 库中的 Tk 类。在初始化函数中,我们创建了一个菜单栏和一个菜单项,并将其添加到窗口中。菜单项的功能是打开一个 Excel 文件并读取其中的工作表名字。读取完成后,我们创建了与工作表名字对应的按键,并将其添加到窗口中。当用户点击这些按键时,我们读取相应的工作表中的一行数据,并在日志框中显示出来。同时,我们根据数据内容自动添加了下拉框和滑动条。
python寫一個gui窗口一個菜單欄,菜單欄名字叫PA,這個PA連接一個指定的excel,儅用戶點擊PA時把這個excel中所有的工作表名打印在窗口中生成按鈕靠窗口左邊竪著放,再在下方生成日志框,儅點擊這些按鈕時可以讀取相應工作表中的一列所有的數據后並根據數據内容在後面添加下拉輸入框將他們放在日志框中再根據數據内容在日志框中自動添加滑動條,
以下是一个实现你所描述功能的Python GUI程序,使用了tkinter和openpyxl库:
```python
import tkinter as tk
from tkinter import ttk
from tkinter import scrolledtext
from tkinter import messagebox
import openpyxl
class App:
def __init__(self):
self.window = tk.Tk()
self.window.title("PA")
self.window.geometry('800x600')
# 创建菜单栏
menubar = tk.Menu(self.window)
self.window.config(menu=menubar)
# 添加菜单项
fileMenu = tk.Menu(menubar, tearoff=0)
menubar.add_cascade(label="PA", menu=fileMenu)
fileMenu.add_command(label="Load Excel", command=self.load_excel)
# 工作表名按钮列表
self.sheet_btns = []
# 创建工作表名按钮区域
self.sheet_btn_frame = tk.Frame(self.window, width=200, bg="grey")
self.sheet_btn_frame.pack(side=tk.LEFT, fill=tk.Y)
# 创建日志框
self.log = scrolledtext.ScrolledText(self.window, width=100, height=20)
self.log.pack(side=tk.BOTTOM, fill=tk.BOTH)
self.window.mainloop()
def load_excel(self):
# 打开指定的Excel文件
file_path = tk.filedialog.askopenfilename(filetypes=[('Excel Files', '*.xlsx')])
if file_path:
wb = openpyxl.load_workbook(file_path)
# 清空工作表名按钮区域和工作表名按钮列表
for btn in self.sheet_btns:
btn.destroy()
self.sheet_btns = []
# 遍历工作表并创建按钮
for sheet_name in wb.sheetnames:
btn = ttk.Button(self.sheet_btn_frame, text=sheet_name, command=lambda name=sheet_name:self.load_sheet(name, wb))
btn.pack(side=tk.TOP, fill=tk.X)
self.sheet_btns.append(btn)
def load_sheet(self, sheet_name, wb):
try:
# 获取指定工作表的所有行
ws = wb[sheet_name]
rows = list(ws.iter_rows(values_only=True))
if not rows:
raise Exception("No data in sheet")
# 获取第一行的列名
col_names = rows[0]
if not col_names:
raise Exception("No column names")
# 计算滑动条的初始值和步长
min_val = min([min(row[1:]) for row in rows[1:]])
max_val = max([max(row[1:]) for row in rows[1:]])
step = (max_val - min_val) / 100
# 清空日志框
self.log.delete('1.0', tk.END)
# 创建下拉框和滑动条,并将其添加到日志框中
for col_idx, col_name in enumerate(col_names[1:], start=1):
combo_box = ttk.Combobox(self.log, values=rows[1:, col_idx], state="readonly")
combo_box.pack(side=tk.LEFT, padx=5, pady=5)
scrollbar = tk.Scale(self.log, from_=min_val, to=max_val, resolution=step, orient=tk.HORIZONTAL)
scrollbar.pack(side=tk.LEFT, fill=tk.X, expand=True, padx=5, pady=5)
self.log.insert(tk.END, f"{col_name}:\n", "bold")
self.log.window_create(tk.END, window=combo_box)
self.log.window_create(tk.END, window=scrollbar)
self.log.insert(tk.END, "\n")
except Exception as e:
messagebox.showerror("Error", str(e))
if __name__ == '__main__':
app = App()
```
运行该程序后,点击菜单栏中的“Load Excel”菜单项,可以选择一个Excel文件。选定文件后,程序会将文件中所有工作表的名称创建为一个个按钮,放置在窗口的左侧。当用户点击其中一个工作表名按钮时,程序会读取该工作表的第一行作为列名,然后将每一列的数据分别创建为一个下拉框和一个滑动条,放置在窗口的底部日志框中。用户可以在下拉框中选择某一行的数据,也可以通过滑动条调整该行的值。在日志框中可以看到每一列的名称,以及对应的下拉框和滑动条。
阅读全文