【发布时间】:2017-08-21 03:58:41
【问题描述】:
当“添加条目”用于我的程序时,我正在尝试创建新的输入框。我确实意识到“打包代码”在我单独运行时有效,但是当我与grid() 中的现有程序结合使用时,当我运行我的程序时,窗口没有显示。
我也明白,当我在同一个程序中使用.grid() 有其他事情时,我们不应该同时使用.pack()。因此,我的问题是,如何在网格中创建新的输入框。
我尝试在其他地方寻找,但他们都建议打包。例如:我看过herehere等等等等,仅举几例;但找不到与我类似的东西。我想在第 3 行的当前输入框下方添加输入框。
我对 Python 有点陌生; (我在这个程序中使用 Python 2.7 和 tkinter 模块。非常感谢您的帮助! 我的简化错误代码如下:
from Tkinter import *
import tkFileDialog
import tkMessageBox
import Tkinter
import os
class Window:
def __init__(self, master):
self.filename3=""
csvfile=Label(root, text="NUMBERS").grid(row=3, column=0)
bar=Entry(master).grid(row=3, column=3)
self.entryText3 = StringVar()
self.bar = Entry(root, textvariable=self.entryText3).grid(row=3, column=3)
#BUTTONS
self.cbutton= Button(root, text="OK", command=self.process_csv)
self.cbutton.grid(row=15, column=6, sticky = W + E)
####PROBLEM FROM HERE#####
all_entries = []
addboxButton = Button(root, text='ADD', fg="BLUE", command=self.addBox)
addboxButton.pack()
#I have also tried replacing the last 2 lines with the following 2 lines instead but to no avail:
#self.addboxButton = Button(root, text='ADD THA-ID', fg="BLUE", command=self.addBox)
#self.addboxButton.grid(row=3, column=6)
frame_for_boxes = Frame(root)
frame_for_boxes.pack()
def addBox(self):
print "ADD"
next_row = len(all_entries)
lab = Label(frame_for_boxes, text=str(next_row+1))
lab.grid(row=next_row, column=0)
ent = Entry(frame_for_boxes)
ent.grid(row=next_row, column=0)
all_entries.append( ent )
def process_csv(self):
#own program here
print "program"
root = Tk()
window=Window(root)
root.mainloop()
【问题讨论】:
-
“我也明白,当我在同一个程序中使用 .grid() 有其他东西时,我们不应该同时使用 .pack()。” - 那不是一个正确的陈述。您可以在同一个程序中同时使用
grid和pack,但不能用于共享同一个parent的两个或多个小部件。
标签: python python-2.7 user-interface layout tkinter