2016-11-18 2 views
0

Всякий раз, когда я что-то программировать в Python с Tkinter, код выглядит следующим образом:параметры «Неопределенные» в вызовы функций в Python

from Tkinter import * 

    class GUI(): 

     def __init__(self, master): 

      self.master = master # master is an instance of Tk 
      self.master.title("") # set the name of the window 

      self.frame = Frame(self.master, width=800, height=500, bg="#eeeeee") 
      # 800, 500 and "#eeeeee" are examples of course 
      self.frame.pack() 

      self.canvas = Canvas(self.frame, width=800, height=500, bg="ffffff") 
      self.canvas.place(x=0, y=0) 
      #mostly there are some other widgets 

     # here are obviously other methods 

    def main(): 

     root = Tk() 
     app = GUI(root) # root and app.master are synonyms now 
     app.master.mainloop() 

    if __name__ == '__main__': 

     main() 

Моя проблема, я не понимаю, почему Frame(width=800, height=500) или place(x=0, y=0) работает : Я не определял параметры height, width, x и y. Рассматривая код в модуле Tkinter, функции ожидают параметр, называемый *args или **kw. Я знаю, как их использовать (по крайней мере, достаточно для разработки небольших приложений), но я не знаю, как определить функцию, которая использует эти параметры. Я чувствую, что не очень разбираюсь в этой части питона, хотя я могу работать с ней.

Так что мой вопрос:
как можно определить функцию, то, что называется со следующим синтаксисом:

functionName(parameterName1 = value, paramterName2 = value, ...) 

мне не нужно знать, как сделать функцию, что принимающий, меняющийся количество параметров (в сочетании с моей проблемой), но было бы неплохо.

+0

В любом базовом учебнике python показано, как это сделать. Здесь [Определение функций] (https://docs.python.org/3/tutorial/controlflow.html#defining-functions) в стандартном учебнике. – tdelaney

ответ

1

Что вы имеете в виду, называется аргументы ключевого слова.

Возможно, одним из лучших способов определения функции с конкретными аргументами ключевого слова является предоставление значений по умолчанию. Это характерно для по умолчанию быть None, если у вас нет необходимости какого-либо другого по умолчанию:

def functionName(parameterName1=None, parameterName2=None): 
    print("parameter one is: %s" % str(parameterName1)) 
    print("parameter two is: %s" % str(parameterName2)) 

Вы можете вызвать эту функцию следующим образом:

foo = functionName(parameterName1="hello", parameterName2="world") 

Вы также можете сделать то, что Tkinter функции выполняются и принимают параметр **kwargs. Это собирает все названные аргументы в словарь, который вы можете перебирать:

def functionName(**kwargs): 
    print("the arguments are:", kwargs) 

Примечание: Вы не должны использовать имя kwargs - вы можете использовать любое имя, которое вы хотите (**kw, **kwargs, **whatever), но kwargs представляется наиболее распространенным.

+0

Спасибо, я уже знал, как установить значение по умолчанию, я просто не знал, что могу ввести имя аргумента в вызове функции. – Aemyl

Смежные вопросы