2017-08-18 36 views
0

入力ウィジェットで入力した名前の長さをチェックし、小文字で返すようにします。したがって、印刷ボタンをクリックすると、入力した名前が小文字で印刷されます。入力した関数を入力してtkinterに出力する方法

チャレンジ:

それは私が印刷ボタンをクリックしたときに入力した名前が印刷されませんが、それはjournalist機能のIDを出力します。

from tkinter import messagebox 
from tkinter import * 


def journalist(): 
    name = input("please enter journalist name:") 
    if len(name) > 15:   # checks the length of your input 
     messagebox.showerror("error,message=name more than length of '15' ") 
    return(name.lower()) # converts the name string entered to lowercase 


def print_journalist_name(): 
     print(journalist) 
     # To print name entered 


root = Tk() 
root.geometry("300x300") 

news = StringVar() 

label = Label(text="Name").place(x=5, y=100) 
entry = Entry(root, width=40, textvariable=news).place(x=45, y=100) 
button = Button(root, text="Print", command=print_journalist_name).place(x=90, y=200) 

root.mainloop() 
+3

を参照してください?ユーザー入力行を取得するには、Entryウィジェットを使用する必要があります。そのコードにはいくつかのタイプミスがあります。また、 'Tk()'を呼び出す前にStringVarのようなTkinterオブジェクトを作成しないでください。 –

+0

@DAZWANあなたに適した回答が見つかったら、回答の横にあるチェックマークをクリックしてそれを受け入れます。これにより、あなたの問題を抱えている他の人があなたのためにどのソリューションがうまく機能しているかを知ることができます – Adi219

+0

**あなたが悪い時間を過ごすようになっているフォーメーション** – Will

答えて

1

コメントでは、「端末に名前を入力するように求めますが、入力ウィジェットに入力した名前が必要です」とコメントしました。さて、それはinput()呼び出しでそれを行うように言ったので、端末のユーザー入力を求めます。

ここでは、あなたが望むようにコードを再構成したものです。

Entryウィジェットのtextvariable newsからユーザー入力を受け取り、サイズがそれほど大きくないことをテストし、小文字に変換して、端末で印刷します。長すぎる場合は、メッセージボックスにエラーメッセージを表示し、エントリ内の文字列を空の文字列に設定します。 import tkinter as tkを行うことはクリーンであり、それは名前がTkinterのから来ている明白なので、読みやすくなりますので、コード

import tkinter as tk 
from tkinter import messagebox 

def print_journalist_name(): 
    # Get the name from the Entry widget 
    name = news.get() 
    if len(name) > 15: 
     msg = "Length of\n{}\nis greater than 15".format(name) 
     messagebox.showerror("error", message=msg) 
     # Clear the name 
     news.set('') 
    else: 
     print(name.lower()) 

root = tk.Tk() 
root.geometry("300x300") 

label = tk.Label(text="Name").place(x=5,y=100) 
news = tk.StringVar() 
entry = tk.Entry(root, width=40, textvariable=news).place(x=45,y=100) 
button = tk.Button(root, text="Print", command=print_journalist_name).place(x=90,y=200) 

root.mainloop() 

私はfrom tkinter import *を処分しました。

あなたは

from tkinter import * 

を行うと、それはあなたの名前空間に135 Tkinterの名を置きます。 Python 2には175の名前があります。これは名前空間に不必要な混乱を引き起こし、名前の衝突を引き起こす可能性があります。間違ったバグにつながる可能性のあるインポートされた名前の1つで誤って変数の名前を付けた場合。複数のモジュールを使ってスターの読み込みを行うと、互いの名前を突き止めることができるので、さらに悪化します。また、星の読み込みでは、ローカルで定義された名前と読み込まれた名前、複数のスターの読み込みで読み込まれた名前を覚えておく必要があるため、コードを読みにくくしています。あなたはGUIプログラムで `input`機能を呼び出しているのはなぜこの重要なトピックに関する詳細情報については

Why is “import *” bad?

1

journalist()を呼び出していないため、ジャーナリストの名前は印刷されません。動作するはずprint(journalist())

変更print(journalist)

+0

ボスありがとう、あなたがプリントするように変更したとき(ジャーナリスト())、あなたの端末にその名前を入力するように頼んでいますが、私は私の端末にそれを入力するように頼むことなく、印刷するために私のGUIの入力ウィジェットに入った。 –

+0

このためには、input()ではなくGUIに入力ボックスが必要です。次に、入力ボックスからの入力を印刷します。 – Adi219

+0

@PM 2 RINGこれは私が多くの感謝のボスを探していたものです。 –

関連する問題