Первым, что мы запишем, будет импортирование нужных нам модулей — все они встроенные, то есть их не нужно скачивать отдельно.
tkinter random
Следующим шагом мы создадим класс Tk() и запишем его в переменную window. Сделав это, мы создали окно программы. После, чтобы программа запускалась, мы в конце кода должны активировать функцию mainloop(). Проверяем и у нас открывается окно программы.

Окно получилось небольшим. Чтобы настроить его размеры, мы используем параметр geometry, там мы запишем размер “800x400”. Также зададим название нашему окну с помощью параметра title.

После создадим класс Frame, в скобках мы должны указать, где мы хотим его создать, а следующей строкой задаем параметр его местоположения. Здесь мы используем относительные координаты, можно смотреть на них, как на проценты, то есть 1% по оси x, 1% по оси y и 98% ширины, 98% высоты. Также, чтобы вы увидели изменения в окне, мы зададим цвет данной рамке и после уберем его.

Теперь пришло время что-то написать в нашей программе, для этого мы используем класс Label. Здесь мы также указываем, в какое окно класса нужно поместить (помещаем его в нашу рамку), какой текст там будет находиться и снова указываем место на экране, на этот раз уже в обычных координатах. Текст получился небольшим, поэтому увеличим его шрифт.
Как записываются координаты? Они берут начало в левом верхнем углу, вправо идет ось x и вниз ось y, их размеры мы задавали вначале. Текст выставился так, как мы указали: по x=250, по y=20.

Дальше мы запишем еще 3 Label-а, куда поместим разный текст и поменяем стиль шрифта на normal. Под ними будет пространство для картинок.

Специально для этой программы мы заранее скачали картинки бумаги, камня и ножниц в формате png. Загрузим их в нашу программу отдельным классом PhotoImage. Мы хотим добавлять их по одному названию, для этого нам нужно, чтобы они были в одной папке с программой, иначе придется указывать весь путь к ним. Копируем и также загружаем остальные картинки.
Теперь поставим эти картинки в нашу игру. Для этого мы опять используем класс Label, показываем ему, куда мы хотим поставить картинки и в параметр image записываем их названия, которые мы пока оставим пустыми, так как ни игрок, ни компьютер ничего не выбрали.
Теперь создадим окошко, в которое будут выводиться результаты игры, то есть объявление, кто победил. Из нового здесь появился параметр width — ширина и borderwidth — он задает ширину границ. Чтобы границы отобразились, запишем параметр relief. Также размещаем наше окошко по координатам.

И наконец сделаем кнопки. Они создаются с помощью класса Button() и в них можно указать текст, также уточним здесь размер текста и ширину кнопки. После размещаем ее на экране. И создаем еще две кнопки.

Пока наши кнопки ничего не делаю. Чтобы это исправить, мы создаем функции, которые прикрепим к ним. Первая функция — Rock(). В переменную user запишем выбор игрока, а в переменную computer — случайный выбор компьютера, именно для этого мы и добавили модуль random. Пишем random.choice() и в скобках — список, из которого нужно выбирать.
Дальше запишем условия: если выбор игрока и компьютера совпал, то текст в нашем label4 измениться на “Ничью”. Чтобы поменять какие-то параметры у класса, мы пишем функцию config, а в ней указываем, что нужно поменять. После запишем условие: если компьютер выбрал бумагу, то он победил, а если оставшийся вариант (ножницы), то победил человек.
Чтобы присоединить функцию, которую мы создали к кнопке, в ее параметрах мы пишем command и записываем название функции. Проверим.
Все работает, но картинки не выводятся. Чтобы они выводились, нужно записать в созданных нами ранее Label-ах для картинок названия. Для этого мы опять используем config и меняем название с пустого на нужное нам. Проверяем, все работает.
Теперь пропишем подобные функции для двух оставшихся кнопок, они будут очень похожи, нужно только поменять названия. И также присоединяем созданные функции к кнопкам.
На этом наша программа готова. Мы регулярно делимся новыми уроками по Python на нашем YouTube-канале, подписывайтесь, чтобы не пропустить следующие выпуски. А также присоединяйтесь к онлайн-курсу по Python для школьников в школе “Пиксель”.


Полный код программы "Камень, ножницы, бумага" на Python:
from tkinter import *
import random
window = Tk()
window.geometry("800x400")
window.title("ROCK PAPER SCISSORS")
window.resizable(width=False, height=False)
frame = Frame(window)
frame.place(relx=0.01, rely=0.01, relwidth=0.98, relheight=0.98)
name = Label(frame, text="Rock Paper Scissors Player VS Computer", font="100")
name.place(x=250, y=20)
label1 = Label(frame, text="Player", font="normal 15")
label2 = Label(frame, text="VS", font="normal 15")
label3 = Label(frame, text="Computer", font="normal 15")
label1.place(x=80, y=50, width=100)
label2.place(x=350, y=50, width=100)
label3.place(x=600, y=50, width=100)
rock_png = PhotoImage(file="rock.png")
scissors_png = PhotoImage(file="scissors.png")
paper_png = PhotoImage(file="paper.png")
user_image = Label(frame, image="")
user_image.place(x=80, y=100)
comp_image = Label(frame, image="")
comp_image.place(x=600, y=100)
label4 = Label(
frame, text="", font="normal 20", width=15, borderwidth=2, relief="solid"
)
label4.place(x=275, y=250)
def Rock():
user = "Rock"
computer = random.choice(["Rock", "Paper", "Scissors"])
user_image.config(image=rock_png)
if user == computer:
label4.config(text="Tie")
comp_image.config(image=rock_png)
elif computer == "Paper":
label4.config(text="Computer Wins!")
comp_image.config(image=paper_png)
else:
label4.config(text="U WIN!")
comp_image.config(image=scissors_png)
b1 = Button(frame, text="Rock", font=10, width=20, command=Rock)
def Paper():
user = "Paper"
user_image.config(image=paper_png)
computer = random.choice(["Rock", "Paper", "Scissors"])
if user == computer:
label4.config(text="Tie")
comp_image.config(image=paper_png)
elif computer == "Scissors":
label4.config(text="Computer Wins!")
comp_image.config(image=scissors_png)
else:
label4.config(text="U WIN!")
comp_image.config(image=rock_png)
b2 = Button(frame, text="Paper", font=10, width=20, command=Paper)
def Scissors():
user = "Scissors"
user_image.config(image=scissors_png)
computer = random.choice(["Rock", "Paper", "Scissors"])
if user == computer:
label4.config(text="Tie")
comp_image.config(image=scissors_png)
elif computer == "Rock":
label4.config(text="Computer Wins!")
comp_image.config(image=rock_png)
else:
label4.config(text="U WIN!")
comp_image.config(image=paper_png)
b3 = Button(frame, text="Scissors", font=10, width=20, command=Scissors)
b1.place(x=100, y=300)
b2.place(x=300, y=300)
b3.place(x=500, y=300)
window.mainloop()