使文本出现在Gui而不是python shell中

时间:2017-03-05 14:56:56

标签: python tkinter

我正在使用python和tkinter创建GUI这会提示用户他的电脑的Mac地址并要求输入代码
我用来检索MAc地址的Python片段是:

import uuid

def get_mac():
    mac_num = hex(uuid.getnode()).replace('0x', '').upper()
    mac = ''.join(mac_num[i : i + 2] for i in range(0, 11, 2))
    return mac

x= get_mac()
print x

我还制作了一个包含两个字段的gui,如下所示

enter image description here

然而,当我执行python片段时,mac地址显示在python gui外部和python shell中,如何让mac地址出现在GUi本身提供的空间中

以下是gui的代码:

from Tkinter import *
from ttk import *
root =Tk()
def show_form():
bottomFrame = Frame(root)
bottomFrame.pack(side=BOTTOM)

b = Button(bottomFrame,text="ACTIVATE",command=lambda: show_call_back(root))
b1 = Button(bottomFrame, text="TRIM")
b2 = Button(bottomFrame, text="OVERLAY")
b3 = Button(bottomFrame, text="MERGE")

b.pack(side=RIGHT,padx=8,pady=26)
b1.pack(side=LEFT, padx=8, pady=26)
b1.config(state='disabled')
b2.pack(side=LEFT, padx=8, pady=26)
b2.config(state='disabled')
b3.pack(side=LEFT, padx=8, pady=26)
b3.config(state='disabled')

root.mainloop()



def show_call_back(parent):

top = Toplevel(parent)
top.geometry("250x200+600+250")
top.resizable(width=False, height=False)

top.title("Activation")
Label(top, text="Mac Address:",).grid(row=0, sticky=W, padx=4)


Label(top, text="Code").grid(row=1, sticky=W, padx=4)
Entry(top).grid(row=1, column=1, sticky=E, pady=4)
Button(top, text="Submit", command=top.destroy).grid(row=2, column=1)


show_form()
root.mainloop()

1 个答案:

答案 0 :(得分:0)

在您上次发表评论后,解决方案非常简单:添加新标签以显示get_mac()的结果。

解决方案 - 在row=0text=get_mac()中添加标签。

hLbl = Label(top, text=get_mac(), bg='white', relief=SUNKEN, width = 15)
hLbl.grid(row=0, column=1, sticky=E, pady=4)
  

我已将bg='white'relief=SUNKEN添加到与之相同的样式中   一个条目。额外width = 15是扩大标签的大小。

警告1 - 作为@abccd注释,只保留一个mainloop(),并在函数声明后放置root = Tk()

警告2 - 不要将root用作函数bottomFrame = Frame(root)的{​​{1}}中的全局变量,而是将其添加为输入参数。

show_form()

并致电:

def show_form(my_root): # use my_root instead of global root
    bottomFrame = Frame(my_root)
    bottomFrame.pack(side=BOTTOM)
    #  also for the command parameter
    b = Button(bottomFrame,text="ACTIVATE",command=lambda: show_call_back(my_root))
    ...

编辑-------

输出 - 这是我在Python 3.5.0下获得的

enter image description here