zep*_*hyr -1 python user-interface tkinter
我的代码类似于以下内容
import tkinter as tk
from tkinter import Tk
from tkinter import ttk
root = Tk()
ttk.Label(root, text = 'label text', justify = 'center').grid(row=0, column=0)
string = tk.StringVar()
string.set('entry text')
ttk.Entry(root, textvariable = string).grid(row=0, column=1)
mainButton = ttk.Button(root, text = 'BUTTON').grid(row = 1, columnspan = 2)
root.pack()
Run Code Online (Sandbox Code Playgroud)
实际上,这使得第一行在其旁边有一个标签和一个文本框,在同一行上,然后是两个下面的按钮.现在,当按下该按钮时,我想在包含按钮的行中添加新标签/条目,并将按钮向下移动一行.有可行的方法吗?
使用grid_forget,您可以删除按钮,然后再使用grid新位置.我在下面的例子中证明了这一点.我已经把你的程序变成了一个class,所以你可以很容易地传递诸如string through之类的变量self.正如你所看到的,我已经追加每一个新StringVar来self.string.这样,您可以使用检索每个窗口小部件的条目文本self.string[index].get()
import tkinter as tk
from tkinter import ttk
class App():
def __init__(self):
self.root = tk.Tk()
ttk.Label(self.root, text = 'label text', justify = 'center').grid(row=0, column=0)
self.string = [tk.StringVar()]
self.string[0].set('entry text')
ttk.Entry(self.root, textvariable = self.string[0]).grid(row=0, column=1)
self.mainButton = ttk.Button(self.root, text = 'BUTTON', command=self.callback)
self.mainButton.grid(row = 1, columnspan = 2)
self.root.mainloop()
def callback(self):
self.mainButton.grid_forget()
self.string.append(tk.StringVar())
l = len(self.string)
self.string[l-1].set('entry text')
ttk.Label(self.root, text = 'label text', justify = 'center').grid(row=l-1, column=0)
ttk.Entry(self.root, textvariable = self.string[l-1]).grid(row=l-1, column=1)
self.mainButton.grid(row = l, columnspan = 2)
App()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2960 次 |
| 最近记录: |