2017-03-05 24 views
0

私はPythonとtkinterでGUIを作っています。ユーザーに自分のPCのMacアドレスを入力してコードを要求します。
MAcアドレスを取得するために使用したPythonスニペットは、
Pythonシェルの代わりにGuiに文字を表示する

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 

iはPythonがMACアドレスをスニペット実行しかし

enter image description here

次のように私は2つのフィールドを含むGUIをも行っていますPythonのGUI外とPythonシェルに表示され、どのように私は、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() 
+0

あなたはtaを追加しましたg 'tkinter'であるが、提供されたソースコードではそのグラフィックライブラリは使用されない。スニペットのソースコードを提供してください。注意:あなたが標準の 'print'関数を使用しているので、Macアドレスはシェルに表示されます。 –

+0

今すぐコードを追加しました。 –

+1

をチェックしてください。まず、メインループを1つだけ持ってください。 – abccd

答えて

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は、ラベルのサイズを拡大することです。

警告 - 唯一のメインループを()保つ、@abccdコメントとして、および関数宣言の後にroot = Tk()を配置します。

警告2 - 代わり関数show_form()bottomFrame = Frame(root)にグローバル変数としてrootを使用しての、入力パラメータとして追加。

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)) 
    ... 

およびコール:

root = Tk() 
show_form(root) 
root.mainloop() 

EDIT -------

出力 - ここでは、私は、Python 3.5.0

enter image description hereの下に得るものです

+0

Phew Thanks man ...とにかく実際のアドレスが表示される前に "Macアドレス:"を含めるには、何かありますか? –

+0

@JustinJoyあなたは私の答えに何を追加しましたか? –

+0

ああ、私は実際に "Mac address:"のラベルを印刷した行を削除しましたが、今はすべて良いです。出力は上記と同じです。どうもありがとうございます。 –

関連する問題