python如何实现多行输入框_关于python:在Tkinter中为不同行中的多个标签创建不同长度的文本框小部件...

我一直在尝试使用Tkinter模块为Python 3.4.2创建一个应用程序

有N个标签。

对于这N个标签中的每一个,我试图创建一行文本框,这些文本框可能/可能不是相同的长度。

每个标签的文本框数量也可能不同。

我需要这个窗口的滚动条。

所以我创建了一个画布并使用Scrollbar小部件来创建水平和垂直滚动条。在这个画布中,我输入了一个框架,以便我可以添加我的标签和文本框。

为了构造不同长度的文本框,我使用了小部件的grid()方法。

我读到网格列的长度足以容纳最大的小部件(这里是文本框),你不能在网格的单元格中添加多个小部件。

我使用了Textbox小部件的columnspan属性,但没有任何帮助。 e1.grid(row = i,column = 1,columnspan = width)

对于第一列

和后续列的e1.grid(row = i,column = width_sum,columnspan = width)。这里width_sum是不同文本框长度的总和,因为它是当前的。为每个Label(存在于不同的行中)重置width_sum参数。

我需要这样的输出:

在此输入图像描述

提前致谢。

要实现您描述的GUI,我认为您最好的选择是:

每行创建1帧。

然后在每个框架中,使用.pack()几何管理器并排打包文本框。

FEkNv.png

码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33import tkinter as tk

from random import randint

root = tk.Tk()

# Create N frames on top of each other

N = 4

frames = []

for n in range(N):

frame = tk.Frame(root)

frame.pack(side='top', anchor='w')

# Store the current frame reference in"frames"

frames.append(frame)

# Add some widgets in each frame

entryboxes = {frame: [] for frame in frames}

for i, frame in enumerate(frames):

# Add a label

label = tk.Label(frame, text="Label"+str(i+1))

label.pack(side='left')

# Add 5 Entry boxes with random widths

for i in range(5):

random_width = 10 + randint(0,9)

e = tk.Entry(frame, width = random_width)

e.pack(side='left')

# Store the current entrybox reference in"entryboxes"

entryboxes[frame].append(e)

# Add some text in the 4th box of the 3rd frame

entryboxes[frames[2]][3].insert(0, 'hello')

# Launch the app

root.mainloop()

嘿Josselin,谢谢你的回复。 为每行添加一个框架似乎是现在的自然解决方案。

很高兴你喜欢它! 如果它解决了你的问题,你可以接受答案;)stackoverflow.com/help/someone-answers

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值