Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何为列表中的项目设置标签?_Python_User Interface_Tkinter - Fatal编程技术网

Python 如何为列表中的项目设置标签?

Python 如何为列表中的项目设置标签?,python,user-interface,tkinter,Python,User Interface,Tkinter,首先,每次按下按钮并选择一个选项时,我都会得到错误: TypeError:&:“非类型”和“非类型”的操作数类型不受支持 但它做了它应该做的。这是个问题吗 其次,我希望“Current_list_var”标签中的文本包含“Champion list”中的项目。然后,当我按下按钮并选择一个选项时,列表中的下一项应该出现在标签上 我怎样才能做到这一点 import tkinter as tk from tkinter import ttk import tkinter.messagebox TITL

首先,每次按下按钮并选择一个选项时,我都会得到错误:

TypeError:&:“非类型”和“非类型”的操作数类型不受支持

但它做了它应该做的。这是个问题吗

其次,我希望“Current_list_var”标签中的文本包含“Champion list”中的项目。然后,当我按下按钮并选择一个选项时,列表中的下一项应该出现在标签上

我怎样才能做到这一点

import tkinter as tk
from tkinter import ttk
import tkinter.messagebox
TITLE_FONT = ("Helvetica", 18, "bold")


root = tk.Tk()
root.minsize(500, 400)

titel = tk.StringVar()
score_Dennis = tk.IntVar()
score_Jawa = tk.IntVar()
titel_score_var = tk.IntVar()
list_var = tk.IntVar()
counter_var = tk.IntVar()
champvar = tk.StringVar()
listvar = tk.IntVar()

# Frames
mainframe=tk.Frame(root).pack()
titel_frame = tk.Frame(mainframe)
titel_frame.pack()
score_frame = tk.Frame(mainframe)
score_frame.pack()

# Init
titel.set("")

if score_Jawa == 0:
    score_Jawa.set(score_Jawa)

if score_Dennis == 0:
    score_Dennis.set(score_Dennis)

champion_list = ['SomeItem', 'AnotherItem', 'AndAnotherItem']


# Functions
def popup():
    tkinter.messagebox.showinfo('Info', 'popup')

def titel_check():

    if score_Dennis.get() == score_Jawa.get():
        titel.set('Het staat gelijk!')
        titel_score_var.set('start een match')
    elif score_Jawa.get() > score_Dennis.get():
        titel.set("Jawa staat voor met: ")
        titel_score_var.set(score_Jawa.get() - score_Dennis.get())
    else:
        titel.set("Dennis staat voor met: ")
        titel_score_var.set(score_Dennis.get() - score_Jawa.get())


def Dennis_plus():
    score_Dennis.set(score_Dennis.get() +1)
    titel_check()
    counter_var.set(score_Dennis.get() + score_Jawa.get())
    return
def Jawa_plus():
    score_Jawa.set(score_Jawa.get() + 1)
    titel_check()
    counter_var.set(score_Dennis.get() + score_Jawa.get())
    return


def nieuwe_match():
    x = champion_list
    top = tk.Toplevel()
    global listvar
    top.title("Uitslag")
    top.minsize(100, 80)
    msg = tk.Message(top, text="Who won?")
    msg.pack()

    button_Jawa = tk.Button(top, text="Jawa", command=lambda:Jawa_plus() & top.destroy())
    button_Jawa.pack(side=tk.LEFT, pady=15, padx=10)

    button_Dennis = tk.Button(top, text="Dennis", command=lambda:Dennis_plus() & top.destroy())
    button_Dennis.pack(side=tk.RIGHT, pady=15, padx=10)

    return


# Layout

titel_label = tk.Label(titel_frame, textvariable=titel, font=TITLE_FONT)
titel_label.grid(row=0, column=0)
huidige_champ = tk.Label(score_frame, text="De gespeelde Champ is:", font=TITLE_FONT)
huidige_champ.grid(row=5, column=0)
current_list_var = tk.Label(score_frame, text=champvar.get(), font=TITLE_FONT) # the list variable
current_list_var.grid(row=5, column=1)
titel_score = tk.Label(titel_frame, textvariable=titel_score_var, font=TITLE_FONT)
titel_score.grid(row=0, column=1)

score_Dennis_label_text = tk.Label(score_frame, text="Dennis: ", font=TITLE_FONT).grid(row=1, column=1)
score_Dennis_label = tk.Label(score_frame, textvariable=score_Dennis, font=TITLE_FONT)
score_Dennis_label.grid(row=1, column=2,sticky=tk.W)

score_Jawa_label_text=tk.Label(score_frame, text="Jawa: ", font=TITLE_FONT).grid(row=1, column=3)
score_Jawa_label = tk.Label(score_frame, textvariable=score_Jawa, font=TITLE_FONT)
score_Jawa_label.grid(row=1, column=4)


next_match = ttk.Button(score_frame, command=nieuwe_match, text="Match gespeeld").grid(row=2, column=2)
totaal_score_label_text = tk.Label(score_frame, text="Aantal gespeelde matches", font=TITLE_FONT).grid(row=4, column=0)
totaal_score_label = tk.Label(score_frame, textvariable=counter_var, font=TITLE_FONT).grid(row=4, column=2)


root.mainloop()

您的第一个错误
TypeError:&:'NoneType'和'NoneType'
发生不受支持的操作数类型,因为
button\u Jawa
button\u Dennis
中的lambda函数

lambda的语法是:
lambda
# try to pass your functions as a list (:
button_Jawa = tk.Button(top, text="Jawa", command=lambda: [Jawa_plus(), top.destroy()])
button_Dennis = tk.Button(top, text="Dennis", command=lambda: [Dennis_plus(), top.destroy()])
current_list_var = tk.Label(score_frame, textvariable=champvar, font=TITLE_FONT) # the list variable
button_Jawa = tk.Button(top, text="Jawa", command=lambda: [Jawa_plus(), top.destroy(), champvar.set("Jawa")])
button_Dennis = tk.Button(top, text="Dennis", command=lambda: [Dennis_plus(), top.destroy(), champvar.set("Dennis")])
from itertools import cycle

listing = ['ok1', 'ok2', 'blablabla', 'okagain']
listing2 = ['cat', 'dog', 'crocodile']


def loop_over(iterable=None, change=False):
    # smth like static variable
    if (not hasattr(loop_over, 'pool') or change) and iterable is not None:
        loop_over.pool = cycle(iterable)

    if not change and hasattr(loop_over, 'pool'):
        return next(loop_over.pool)


def main():
    # set new list to cycle
    loop_over(listing, True)

    # loop over
    for i in range(0, 5):
        print(loop_over())

    # set another list to cycle
    loop_over(listing2, True)

    # loop over
    for i in range(0, 5):
        print(loop_over())


main()
from itertools import cycle

pool = cycle(['cat', 'dog', 'crocodile'])

for i in range(0, 5):
    print(next(pool))