0
    import sys
from tkinter import *
def main():


    mtext = ment.get()
    mlabel2 = Label(top, text=mtext).pack()

def isbn():
    digits = [(11 - i) * num for i, num in enumerate(map(int, list()))]
    digit_11 = 11 - (sum(digits) % 11)
    if digit_11 == 10:
        digit_11 = 'X'    
    digits.append(digit_11)
    isbn_number = "".join(map(str, digits))
    label2 = Label(top, text = "Your ISBN number is",).pack()



top = Tk()
top.geometry("450x450+500+300")
top.title("Test")
button = Button(top,text="OK", command = isbn, fg = "red", bg="blue").pack()
label = Label(top, text = "Please enter the 10 digit number").pack()

ment= IntVar()

mEntry = Entry(top,textvariable=ment).pack()

您好,我目前的代码是一个工作阶段,我只需要一种打印结果的方式,因为目前还没有。我还希望转换器与 10 位数字一起正常工作,第 11 位数字是转换器发现的数字。坦尔斯

4

1 回答 1

0

请注意按钮的命令如何调用该函数来执行您的操作:

from tkinter import *


def find_isbn(isbn, lbl):
    if len(isbn) == 10:
        mult = 11
        total = 0
        for i in range(len(isbn)):
            total += int(isbn[i]) * mult
            mult -= 1
        digit_11 = 11 - (total % 11)
        if digit_11 == 10:
            digit_11 = 'X'
        isbn += str(digit_11)
        lbl.config(text=isbn)

top = Tk()
top.geometry("450x450+500+300")
top.title("Test")

button = Button(top, text="OK", command=lambda: find_isbn(mEntry.get(), mlabel2), fg="red", bg="blue")
button.pack()

label = Label(top, text="Please enter the 10 digit number")
label.pack()

mEntry = Entry(top)
mEntry.pack()

mlabel2 = Label(top, text='')
mlabel2.pack()

top.mainloop()

您还需要.mainloop()在您的主小部件上调用 , 以开始整个过程​​。最好.pack()在单独的行上调用对象。pack()并且grid()不返回任何内容,因此一旦执行此操作,您将无法在对象上使用其他方法。

于 2014-01-07T20:22:31.983 回答