self.log_frame.grid(row=280, column=0, columnspan=14, padx=10, pady=20, sticky="WE")修改為不可拉伸
时间: 2023-11-22 16:55:59 浏览: 101
你可以将 sticky 参数的值从 "WE" 改为 "W",这样就只会让 log_frame 左对齐,并且不会被拉伸。修改后的代码如下:
```
self.log_frame.grid(row=280, column=0, columnspan=14, padx=10, pady=20, sticky="W")
```
相关问题
class InventoryApp: def init(self, master): self.master = master master.title("物料进出库统计") # 创建标签和文本框 self.label1 = tk.Label(master, text="物料名称:") self.label1.grid(row=0, column=0, padx=5, pady=5) self.material_name = tk.Entry(master) self.material_name.grid(row=0, column=1, padx=5, pady=5) self.label2 = tk.Label(master, text="数量:") self.label2.grid(row=1, column=0, padx=5, pady=5) self.material_qty = tk.Entry(master) self.material_qty.grid(row=1, column=1, padx=5, pady=5) # 创建进出库按钮 self.in_button = tk.Button(master, text="进库", command=self.in_stock) self.in_button.grid(row=2, column=0, padx=5, pady=5) self.out_button = tk.Button(master, text="出库", command=self.out_stock) self.out_button.grid(row=2, column=1, padx=5, pady=5) # 添加显示excel内容的按钮 self.show_button = tk.Button(master, text="显示Excel内容", command=self.show_excel) self.show_button.grid(row=3, column=0, padx=5, pady=5) # 打开Excel文件 self.wb = openpyxl.load_workbook(r"C:\Users\bing3_chen\Desktop\1.xlsx") self.record_sheet = self.wb["記錄"] self.data_sheet = self.wb["數據"] # 显示excel内容的回调函数 def show_excel(self): # 创建一个新窗口 top = tk.Toplevel(self.master) # 创建表格用于显示第一个工作表 columns1 = [col[0] for col in self.record_sheet.iter_cols()] treeview1 = ttk.Treeview(top, columns=columns1, show="headings") treeview1.grid(row=0, column=0, padx=5, pady=5) # 设置表格列的标题和宽度 for col in columns1: treeview1.heading(col, text=col) treeview1.column(col, width=100, anchor="center") # 显示第一个工作表的内容 for row in self.record_sheet.iter_rows(values_only=True): treeview1.insert("", tk.END, values=row) # 创建表格用于显示第二个工作表 columns2 = [col[0] for col in self.data_sheet.iter_cols()] treeview2 = ttk.Treeview(top, columns=columns2, show="headings") treeview2.grid(row=1, column=0, padx=5, pady=5) # 设置表格列的标题和宽度 for col in columns2: treeview2.heading(col, text=col) treeview2.column(col, width=100, anchor="center") # 显示第二个工作表的内容 for row in self.data_sheet.iter_rows(values_only=True): treeview2.insert("", tk.END, values=row)修改這個代碼不打開新的窗口,就在原本窗口的右側顯示,并且兩個文本框大小一致,
你可以尝试以下修改代码:
1. 首先,需要在主窗口中添加一个容器,用于放置表格和文本框。
2. 然后,将显示excel内容的按钮的回调函数修改为在容器中创建表格,而不是打开新窗口。
3. 最后,将两个文本框的大小设置为一致。
修改后的代码如下:
```
class InventoryApp:
def __init__(self, master):
self.master = master
master.title("物料进出库统计")
# 创建容器,用于放置表格和文本框
self.container = tk.Frame(master)
self.container.grid(row=0, column=0, padx=5, pady=5)
# 创建标签和文本框
self.label1 = tk.Label(self.container, text="物料名称:")
self.label1.grid(row=0, column=0, padx=5, pady=5)
self.material_name = tk.Entry(self.container, width=20)
self.material_name.grid(row=0, column=1, padx=5, pady=5)
self.label2 = tk.Label(self.container, text="数量:")
self.label2.grid(row=1, column=0, padx=5, pady=5)
self.material_qty = tk.Entry(self.container, width=20)
self.material_qty.grid(row=1, column=1, padx=5, pady=5)
# 创建进出库按钮
self.in_button = tk.Button(self.container, text="进库", command=self.in_stock)
self.in_button.grid(row=2, column=0, padx=5, pady=5)
self.out_button = tk.Button(self.container, text="出库", command=self.out_stock)
self.out_button.grid(row=2, column=1, padx=5, pady=5)
# 添加显示excel内容的按钮
self.show_button = tk.Button(self.container, text="显示Excel内容", command=self.show_excel)
self.show_button.grid(row=3, column=0, columnspan=2, padx=5, pady=5)
# 打开Excel文件
self.wb = openpyxl.load_workbook(r"C:\Users\bing3_chen\Desktop\1.xlsx")
self.record_sheet = self.wb["記錄"]
self.data_sheet = self.wb["數據"]
# 显示excel内容的回调函数
def show_excel(self):
# 创建表格用于显示第一个工作表
columns1 = [col[0] for col in self.record_sheet.iter_cols()]
treeview1 = ttk.Treeview(self.container, columns=columns1, show="headings")
treeview1.grid(row=0, column=2, rowspan=2, padx=5, pady=5, sticky="nsew")
# 设置表格列的标题和宽度
for col in columns1:
treeview1.heading(col, text=col)
treeview1.column(col, width=100, anchor="center")
# 显示第一个工作表的内容
for row in self.record_sheet.iter_rows(values_only=True):
treeview1.insert("", tk.END, values=row)
# 创建表格用于显示第二个工作表
columns2 = [col[0] for col in self.data_sheet.iter_cols()]
treeview2 = ttk.Treeview(self.container, columns=columns2, show="headings")
treeview2.grid(row=2, column=2, padx=5, pady=5, sticky="nsew")
# 设置表格列的标题和宽度
for col in columns2:
treeview2.heading(col, text=col)
treeview2.column(col, width=100, anchor="center")
# 显示第二个工作表的内容
for row in self.data_sheet.iter_rows(values_only=True):
treeview2.insert("", tk.END, values=row)
# 设置文本框大小一致
self.material_name.config(width=20)
self.material_qty.config(width=20)
```
from tkinter import *def submit(): username = entry_username.get() password = entry_password.get() if username == "admin" and password == "123456": label_status.config(text="Login success!") else: label_status.config(text="Login failed!") root = Tk()root.title("Login")frame = Frame(root, padx=10, pady=10)frame.pack()label_username = Label(frame, text="Username: ")label_username.grid(row=0, column=0, sticky=W)entry_username = Entry(frame)entry_username.grid(row=0, column=1)label_password = Label(frame, text="Password: ")label_password.grid(row=1, column=0, sticky=W)entry_password = Entry(frame, show="*")entry_password.grid(row=1, column=1)button_submit = Button(frame, text="Submit", command=submit)button_submit.grid(row=2, column=0, columnspan=2)label_status = Label(frame, text="")label_status.grid(row=3, column=0, columnspan=2)root.mainloop()详细解释一下这段代码
这段代码使用了Python的Tkinter库来创建一个简单的GUI应用程序,在这个应用程序中,用户可以输入用户名和密码,然后点击“Submit”按钮进行登录。
首先,从Tkinter库中导入所有模块,然后定义了一个名为“submit”的函数。这个函数会获取用户输入的用户名和密码,然后检查用户名和密码是否正确。如果正确,就在GUI界面上显示“Login success!”的文本,否则就显示“Login failed!”的文本。
接下来,创建一个名为“root”的Tkinter窗口,并设置窗口标题为“Login”。然后创建一个名为“frame”的Tkinter框架,并将其放置在窗口中央。这个框架包含了用户名、密码、提交按钮和状态文本等控件。
然后,创建一个名为“label_username”的标签(Label)控件,用于显示“Username: ”文本,然后将其放置在框架的第一行第一列(row 0, column 0)并设置其粘性(sticky)为西(W)。接着,创建一个名为“entry_username”的输入框(Entry)控件,并将其放置在框架的第一行第二列(row 0, column 1)。
接下来,创建一个名为“label_password”的标签控件,用于显示“Password: ”文本,然后将其放置在框架的第二行第一列(row 1, column 0)并设置其粘性为西(W)。接着,创建一个名为“entry_password”的输入框控件,并将其放置在框架的第二行第二列(row 1, column 1),并设置其显示为星号(*)。
然后,创建一个名为“button_submit”的按钮(Button)控件,用于触发登录操作,并将其放置在框架的第三行第一列,并设置其跨度(columnspan)为2。当用户点击这个按钮时,会调用之前定义的“submit”函数。
接下来,创建一个名为“label_status”的标签控件,用于显示登录状态信息,并将其放置在框架的第四行第一列,并设置其跨度为2。
最后,调用Tkinter窗口的主循环(mainloop)方法,以便程序能够响应用户的操作并显示GUI界面。
阅读全文