lable1 = Label(frame, text='请选择NC发货清单总表(发票折扣额)报表:') text1 = Entry(frame, bg='white', width=65) title1 = 'nc_path' button1 = Button(frame, text='浏览', width=8, command=lambda: selectExcelfile(title1, text1)) lable1.place(x=40, y=30) text1.place(x=40, y=60) button1.place(x=520, y=55) 以上代码优化为控件随窗口变化自适应
时间: 2023-08-16 20:08:34 浏览: 67
可以使用`place()`方法的相对坐标来实现控件随窗口变化自适应。具体代码如下:
```
lable1 = Label(frame, text='请选择NC发货清单总表(发票折扣额)报表:')
text1 = Entry(frame, bg='white', width=65)
title1 = 'nc_path'
button1 = Button(frame, text='浏览', width=8, command=lambda: selectExcelfile(title1, text1))
lable1.place(relx=0.05, rely=0.1, anchor='w')
text1.place(relx=0.05, rely=0.2, anchor='w')
button1.place(relx=0.8, rely=0.2, anchor='e')
```
在`place()`方法中,`relx`和`rely`分别表示控件的相对坐标,取值范围为0到1,表示相对于父容器的比例。`anchor`参数表示控件的锚点位置,可以是'n'、's'、'e'、'w'、'ne'、'nw'、'se'、'sw'、'center'等。通过设置相对坐标和锚点位置,可以实现控件的自适应。
相关问题
改进代码,实现控件随窗口变化自适应,且不同控件间相对位置不变,代码如下:lable1 = Label(frame, text='请选择NC发货清单总表(发票折扣额)报表:') text1 = Entry(frame, bg='white', width=65) title1 = 'nc_path' button1 = Button(frame, text='浏览', width=8, command=lambda: selectExcelfile(title1, text1)) lable2 = Label(frame, text='请选择客户信息表:') text2 = Entry(frame, bg='white', width=65) title2 = 'custom_path' button2 = Button(frame, text='浏览', width=8, command=lambda: selectExcelfile(title2, text2)) lable1.place(x=40, y=30) text1.place(x=40, y=60) button1.place(x=520, y=55) lable2.place(x=40, y=90) text2.place(x=40, y=120) button2.place(x=520, y=115)
你可以使用 pack 或 grid 方法来实现控件随窗口变化自适应,同时保持不同控件间的相对位置不变。下面是使用 pack 方法的代码示例:
```
lable1 = Label(frame, text='请选择NC发货清单总表(发票折扣额)报表:')
text1 = Entry(frame, bg='white', width=65)
title1 = 'nc_path'
button1 = Button(frame, text='浏览', width=8, command=lambda: selectExcelfile(title1, text1))
lable2 = Label(frame, text='请选择客户信息表:')
text2 = Entry(frame, bg='white', width=65)
title2 = 'custom_path'
button2 = Button(frame, text='浏览', width=8, command=lambda: selectExcelfile(title2, text2))
# 使用 pack 方法自适应布局
lable1.pack(side='top', padx=20, pady=10, anchor='w')
text1.pack(side='top', padx=20, pady=5, fill='x', expand=True)
button1.pack(side='right', padx=20, pady=5)
lable2.pack(side='top', padx=20, pady=10, anchor='w')
text2.pack(side='top', padx=20, pady=5, fill='x', expand=True)
button2.pack(side='right', padx=20, pady=5)
```
在上面的代码中,我们使用了 pack 方法,并指定了不同控件的 side、padx、pady、anchor、fill 和 expand 参数来实现自适应布局和相对位置不变的效果。
其中,side 参数表示控件的位置,可以是 'top'、'bottom'、'left' 或 'right'。padx 和 pady 表示控件与窗口或其他控件之间的水平和垂直间隔。anchor 表示控件在所在区域中的对齐方式,可以是 'n'、's'、'w'、'e'、'nw'、'ne'、'sw' 或 'se'。fill 和 expand 表示控件在所在区域中自适应大小的方式,可以是 'x'、'y' 或 'both'。
def main1(): main1=tk.Tk() main1.title=("数据匿名化") main1.geometry("400x400") text=tk.Text(main1) text.place(x=100, y=320) def main(): global persons given_k =int(NIk.get())lable1=tk.Label(main1,text="请输入K值").place(x=20,y=70) NIk=tk.StringVar() NI_input = tk.Entry(main1, textvariable=NIk) NI_input.place(x=160, y=70) button1=tk.Button(main1,text="开始匿名化",command=main).place(x=100,y=200)
您的代码有一些格式问题,应该是这样的:
```python
import tkinter as tk
def main():
global persons
given_k = int(NIk.get())
def main1():
main1 = tk.Tk()
main1.title("数据匿名化")
main1.geometry("400x400")
lable1 = tk.Label(main1, text="请输入K值")
lable1.place(x=20, y=70)
NIk = tk.StringVar()
NI_input = tk.Entry(main1, textvariable=NIk)
NI_input.place(x=160, y=70)
button1 = tk.Button(main1, text="开始匿名化", command=main)
button1.place(x=100, y=200)
text = tk.Text(main1)
text.place(x=100, y=320)
main1()
```
这样可以正常运行。
阅读全文