對不起,如果標題令人困惑,我真的不知道如何正確地用詞。希望下面的代碼可以清除它。
當我運行程式并呼叫print_names()時,只顯示姓氏“Jenny”。
而如果我呼叫其他兩個函式,則會顯示相應串列中的所有專案。
但是,除非我添加 'row=',否則不同的函式會列印在不同的行上。

我想添加row=,這樣我就可以停止在彼此下方列印不同的功能,但如果我添加它,它只會導致列印姓氏。
我該如何阻止這種情況發生?
from tkinter import *
from tkinter.font import BOLD
gui = Tk()
jnames = [['Jamie','25','Male'],['John','22','Male'],['Jenny','23','Female']]
def quit():
gui.quit()
def print_names():
for x in jnames:
Label(gui, text=((x[0]))).grid(column=0, row=3)
def print_ages():
for x in jnames:
Label(gui, text=((x[1]))).grid(column=1)
def print_gender():
for x in jnames:
Label(gui, text=((x[2]))).grid(column=2)
def main():
Button(gui, text='Quit', command=quit).grid(column=1, row=0, sticky=EW)
Button(gui, text='Print names', command=print_names).grid(column=0, row=1, sticky=EW)
Button(gui, text='Print age', command=print_ages).grid(column=1, row=1, sticky=EW)
Button(gui, text='Print gender', command=print_gender).grid(column=2, row=1, sticky=EW)
Label(gui, text='Name', font=BOLD, width=15).grid(column=0, row=2, sticky=EW)
Label(gui, text='Age', font=BOLD, width=15).grid(column=1, row=2, sticky=EW)
Label(gui, text='Gender', font=BOLD, width=15).grid(column=2, row=2, sticky=EW)
gui.mainloop()
main()
uj5u.com熱心網友回復:
您可以生成一個包含所有名稱(或年齡或性別)的字串,然后將其放在所需的列和行中。這是一個例子:
def print_names():
names = [x[0] for x in jnames]
Label(gui, text='\n'.join(names)).grid(column=0, row=3)
以上將簡單地創建一個多行字串并將其添加到第 0 列和第 3 行。
uj5u.com熱心網友回復:
試試這個,每次要創建新標簽時都需要增加行
def print_names():
row = 3
for x in jnames:
Label(gui, text=x[0]).grid(column=0, row=row)
row = 1
def print_ages():
row = 3
for x in jnames:
Label(gui, text=x[1]).grid(column=1, row=row)
row = 1
def print_gender():
row = 3
for x in jnames:
Label(gui, text=x[2]).grid(column=2, row=row)
row = 1
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/505400.html
標籤:Python 列表 tkinter 排 tkinter-标签
