当前位置:   article > 正文

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

tk.label(frame, text=

我一直在尝试使用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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/空白诗007/article/detail/767614
推荐阅读
相关标签
  

闽ICP备14008679号