Как брать фотки из Яндекс/гугл диска и использовать их в коде
pixmap = QPixmap('img.png')
то бишь тут у меня берется фото, закинутое в проект, а надо сделать что бы я скачивал его с яндекс диска и так же сохранял в переменную. И еще вопрос, получится ли это все в .exe файле? Просто начинающий программист, вообще не знаю как это делать. Вот весь код (сразу сорри что не использовал классы, я хз как это сделать, поэтому код ОГРОМНЫЙ, и он еще не сделан полностью, там еще все меняться будет)
from PyQt5 import QtCore, QtWidgets, QtGui
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import (
QApplication, QWidget,
QHBoxLayout, QVBoxLayout,
QGroupBox, QButtonGroup, QRadioButton,
QPushButton, QLabel)
from random import randint, shuffle
import sys
from PyQt5.QtGui import QPixmap # оптимизированная для показа на экране картинка
m = 0
questions_list = []
def wind1():
global btn_OK
btn_OK = QPushButton('Ответить') # кнопка ответа
lb_Question = QLabel('Какой у вас курс?') # текст вопроса
RadioGroupBox = QGroupBox("Варианты ответов") # группа на экране для переключателей с ответами
global answers
rbtn_1 = QRadioButton('Python start - 1 курс')
rbtn_2 = QRadioButton('Python start - 2 курс')
rbtn_3 = QRadioButton('Python PRO - 1 курс')
rbtn_4 = QRadioButton('Python PRO - 2 курс')
answers = [rbtn_1, rbtn_2, rbtn_3, rbtn_4]
RadioGroup = QButtonGroup()
RadioGroup.addButton(rbtn_1)
RadioGroup.addButton(rbtn_2)
RadioGroup.addButton(rbtn_3)
RadioGroup.addButton(rbtn_4)
layout_ans1 = QHBoxLayout()
layout_ans2 = QVBoxLayout() # вертикальные будут внутри горизонтального
layout_ans3 = QVBoxLayout()
layout_ans2.addWidget(rbtn_1) # два ответа в первый столбец
layout_ans2.addWidget(rbtn_2)
layout_ans3.addWidget(rbtn_3) # два ответа во второй столбец
layout_ans3.addWidget(rbtn_4)
layout_ans1.addLayout(layout_ans2)
layout_ans1.addLayout(layout_ans3) # разместили столбцы в одной строк
RadioGroupBox.setLayout(layout_ans1) # готова "панель" с вариантами ответов
global AnsGroupBox
global lb_Result
global lb_Correct
layout_res = QVBoxLayout()
layout_line1 = QHBoxLayout() # вопрос
layout_line2 = QHBoxLayout() # варианты ответов или результат теста
layout_line3 = QHBoxLayout() # кнопка "Ответить"
layout_line1.addWidget(lb_Question, alignment=(Qt.AlignHCenter | Qt.AlignVCenter))
layout_line2.addWidget(RadioGroupBox)
layout_line3.addStretch(1)
layout_line3.addWidget(btn_OK, stretch=2) # кнопка должна быть большой
layout_line3.addStretch(1)
layout_card = QVBoxLayout()
layout_card.addLayout(layout_line1, stretch=2)
layout_card.addLayout(layout_line2, stretch=8)
layout_card.addStretch(1)
layout_card.addLayout(layout_line3, stretch=1)
layout_card.addStretch(1)
layout_card.setSpacing(5) # пробелы между содержимым
global window
window = QWidget()
window.setLayout(layout_card)
window.setWindowTitle('')
btn_OK.clicked.connect(click_OK)
window.score = 0
window.total = 0
window.resize(400, 300)
def click_OK():
if answers[1].isChecked():
global window1
btn_OK = QPushButton('Ответить') # кнопка ответа
lb_Question = QLabel('Выберите тему') # текст вопроса
RadioGroupBox = QGroupBox("Варианты ответов") # группа на экране для переключателей с ответами
rbtn_1 = QRadioButton('Структуры данных')
rbtn_2= QRadioButton('Разработка оконных приложений')
rbtn_3 = QRadioButton('Работа с текстовыми файлами')
rbtn_4 = QRadioButton('Автоматическая обработка изображений')
rbtn_5 = QRadioButton('Продвинутая разработка игр на PyGame')
rbtn_6 = QRadioButton('Публикация и распространение ПО')
global answers1
answers1 = [rbtn_1,rbtn_2,rbtn_3,rbtn_4,rbtn_5,rbtn_6]
RadioGroup = QButtonGroup() # это для группировки переключателей, чтобы управлять их поведением
RadioGroup.addButton(rbtn_1)
RadioGroup.addButton(rbtn_2)
RadioGroup.addButton(rbtn_3)
RadioGroup.addButton(rbtn_4)
RadioGroup.addButton(rbtn_5)
RadioGroup.addButton(rbtn_6)
layout_ans1 = QHBoxLayout()
layout_ans2 = QVBoxLayout() # вертикальные будут внутри горизонтального
layout_ans3 = QVBoxLayout()
layout_ans2.addWidget(rbtn_1) # два ответа в первый столбец
layout_ans2.addWidget(rbtn_2)
layout_ans2.addWidget(rbtn_5)
layout_ans3.addWidget(rbtn_3) # два ответа во второй столбец
layout_ans3.addWidget(rbtn_4)
layout_ans3.addWidget(rbtn_6)
layout_ans1.addLayout(layout_ans2)
layout_ans1.addLayout(layout_ans3) # разместили столбцы в одной строке
RadioGroupBox.setLayout(layout_ans1) # готова "панель" с вариантами ответов
layout_res = QVBoxLayout()
layout_line1 = QHBoxLayout() # вопрос
layout_line2 = QHBoxLayout() # варианты ответов или результат теста
layout_line3 = QHBoxLayout() # кнопка "Ответить"
layout_line1.addWidget(lb_Question, alignment=(Qt.AlignHCenter | Qt.AlignVCenter))
layout_line2.addWidget(RadioGroupBox)
layout_line3.addStretch(1)
layout_line3.addWidget(btn_OK, stretch=2) # кнопка должна быть большой
layout_line3.addStretch(1)
layout_card = QVBoxLayout()
layout_card.addLayout(layout_line1, stretch=2)
layout_card.addLayout(layout_line2, stretch=8)
layout_card.addStretch(1)
layout_card.addLayout(layout_line3, stretch=1)
layout_card.addStretch(1)
layout_card.setSpacing(5) # пробелы между содержимым
window1 = QWidget()
window1.setLayout(layout_card)
window1.setWindowTitle('')
window1.score = 0
window1.total = 0
btn_OK.clicked.connect(click_OK1)
window1.resize(450, 350)
if __name__ == '__main__':
window1.show()
if answers[0].isChecked():
btn_OK = QPushButton('Ответить') # кнопка ответа
lb_Question = QLabel('Выберите тему') # текст вопроса
RadioGroupBox = QGroupBox("Варианты ответов") # группа на экране для переключателей с ответами
rbtn_1 = QRadioButton('Структуры данных')
rbtn_2= QRadioButton('Разработка оконных приложений')
rbtn_3 = QRadioButton('Работа с текстовыми файлами')
rbtn_4 = QRadioButton('Автоматическая обработка изображений')
rbtn_5 = QRadioButton('Продвинутая разработка игр на PyGame')
rbtn_6 = QRadioButton('Публикация и распространение ПО')
RadioGroup = QButtonGroup() # это для группировки переключателей, чтобы управлять их поведением
RadioGroup.addButton(rbtn_1)
RadioGroup.addButton(rbtn_2)
RadioGroup.addButton(rbtn_3)
RadioGroup.addButton(rbtn_4)
RadioGroup.addButton(rbtn_5)
RadioGroup.addButton(rbtn_6)
layout_ans1 = QHBoxLayout()
layout_ans2 = QVBoxLayout() # вертикальные будут внутри горизонтального
layout_ans3 = QVBoxLayout()
layout_ans2.addWidget(rbtn_1) # два ответа в первый столбец
layout_ans2.addWidget(rbtn_2)
layout_ans2.addWidget(rbtn_5)
layout_ans3.addWidget(rbtn_3) # два ответа во второй столбец
layout_ans3.addWidget(rbtn_4)
layout_ans3.addWidget(rbtn_6)
layout_ans1.addLayout(layout_ans2)
layout_ans1.addLayout(layout_ans3) # разместили столбцы в одной строке
RadioGroupBox.setLayout(layout_ans1) # готова "панель" с вариантами ответов
AnsGroupBox = QGroupBox("Результат теста")
lb_Result = QLabel('ghgh') # здесь размещается надпись "правильно" или "неправильно"
lb_Correct = QLabel('ответ будет тут!') # здесь будет написан текст правильного ответа
layout_res = QVBoxLayout()
layout_res.addWidget(lb_Result, alignment=(Qt.AlignLeft | Qt.AlignTop))
layout_res.addWidget(lb_Correct, alignment=Qt.AlignHCenter, stretch=2)
AnsGroupBox.setLayout(layout_res)
layout_line1 = QHBoxLayout() # вопрос
layout_line2 = QHBoxLayout() # варианты ответов или результат теста
layout_line3 = QHBoxLayout() # кнопка "Ответить"
layout_line1.addWidget(lb_Question, alignment=(Qt.AlignHCenter | Qt.AlignVCenter))
layout_line2.addWidget(RadioGroupBox)
layout_line2.addWidget(AnsGroupBox)
AnsGroupBox.hide() # скроем панель с ответом, сначала должна быть видна панель вопросов
layout_line3.addStretch(1)
layout_line3.addWidget(btn_OK, stretch=2) # кнопка должна быть большой
layout_line3.addStretch(1)
layout_card = QVBoxLayout()
layout_card.addLayout(layout_line1, stretch=2)
layout_card.addLayout(layout_line2, stretch=8)
layout_card.addStretch(1)
layout_card.addLayout(layout_line3, stretch=1)
layout_card.addStretch(1)
layout_card.setSpacing(5) # пробелы между содержимым
window1 = QWidget()
window1.setLayout(layout_card)
window1.setWindowTitle('')
window1.score = 0
window1.total = 0
window1.resize(450, 350)
if __name__ == '__main__':
window1.show()
def click_OK1():
if answers1[0].isChecked():
global window2
global RadioGroupBox
btn_OK = QPushButton('Ответить') # кнопка ответа
lb_Question = QLabel('Выбери задание') # текст вопроса
RadioGroupBox = QGroupBox("Варианты ответов") # группа на экране для переключателей с ответами
rbtn_1 = QRadioButton('1')
rbtn_2= QRadioButton('2')
rbtn_3 = QRadioButton('3')
rbtn_4 = QRadioButton('4')
rbtn_5 = QRadioButton('5')
rbtn_6 = QRadioButton('6')
rbtn_7 = QRadioButton('7')
global answers2
answers2 = [rbtn_1,rbtn_2,rbtn_3,rbtn_4,rbtn_5,rbtn_6,rbtn_7]
RadioGroup = QButtonGroup() # это для группировки переключателей, чтобы управлять их поведением
RadioGroup.addButton(rbtn_1)
RadioGroup.addButton(rbtn_2)
RadioGroup.addButton(rbtn_3)
RadioGroup.addButton(rbtn_4)
RadioGroup.addButton(rbtn_5)
RadioGroup.addButton(rbtn_6)
RadioGroup.addButton(rbtn_7)
layout_ans1 = QHBoxLayout()
layout_ans2 = QVBoxLayout() # вертикальные будут внутри горизонтального
layout_ans3 = QVBoxLayout()
layout_ans4 = QVBoxLayout()
layout_ans2.addWidget(rbtn_1)
layout_ans2.addWidget(rbtn_2)
layout_ans2.addWidget(rbtn_3)
layout_ans4.addWidget(rbtn_7)
layout_ans4.addWidget(rbtn_6)
layout_ans3.addWidget(rbtn_4)
layout_ans3.addWidget(rbtn_5)
layout_ans1.addLayout(layout_ans2)
layout_ans1.addLayout(layout_ans3)
layout_ans1.addLayout(layout_ans4) # разместили столбцы в одной строке
RadioGroupBox.setLayout(layout_ans1) # готова "панель" с вариантами ответов
AnsGroupBox1 = QGroupBox("Результат теста")
lb_Result = QLabel('ghgh') # здесь размещается надпись "правильно" или "неправильно"
lb_Correct = QLabel('ss') # здесь будет написан текст правильного ответа
layout_res = QVBoxLayout()
layout_res.addWidget(lb_Result, alignment=(Qt.AlignLeft | Qt.AlignTop))
layout_res.addWidget(lb_Correct, 95)
AnsGroupBox1.setLayout(layout_res)
layout_line1 = QHBoxLayout() # вопрос
layout_line2 = QHBoxLayout() # варианты ответов или результат теста
layout_line3 = QHBoxLayout() # кнопка "Ответить"
layout_line1.addWidget(lb_Question, alignment=(Qt.AlignHCenter | Qt.AlignVCenter))
layout_line2.addWidget(RadioGroupBox)
layout_line2.addWidget(AnsGroupBox1)
AnsGroupBox1.hide() # скроем панель с ответом, сначала должна быть видна панель вопросов
layout_line3.addStretch(1)
layout_line3.addWidget(btn_OK, stretch=2) # кнопка должна быть большой
layout_line3.addStretch(1)
layout_card = QVBoxLayout()
layout_card.addLayout(layout_line1, stretch=2)
layout_card.addLayout(layout_line2, stretch=8)
layout_card.addStretch(1)
layout_card.addLayout(layout_line3, stretch=1)
layout_card.addStretch(1)
layout_card.setSpacing(5) # пробелы между содержимым
window2 = QWidget()
window2.setLayout(layout_card)
window2.setWindowTitle('')
window2.score = 0
window2.total = 0
btn_OK.clicked.connect(click_OK2)
window2.resize(450, 350)
if __name__ == '__main__':
window2.show()
def click_OK2():
if answers1[0].isChecked():
global window3
global AnsGroupBox1
global RadioGroupBox
global lb_Result
global lb_Correct
btn_OK = QPushButton('Ответить') # кнопка ответа
lb_Question = QLabel('Выберите номер') # текст вопроса
RadioGroupBox = QGroupBox("Варианты ответов") # группа на экране для переключателей с ответами
rbtn_1 = QRadioButton('1')
rbtn_2= QRadioButton('4')
rbtn_3 = QRadioButton('6')
rbtn_4 = QRadioButton('7')
rbtn_5 = QRadioButton('8')
rbtn_6 = QRadioButton('9')
global answers3
answers3 = [rbtn_1,rbtn_2,rbtn_3,rbtn_4,rbtn_5,rbtn_6]
RadioGroup = QButtonGroup() # это для группировки переключателей, чтобы управлять их поведением
RadioGroup.addButton(rbtn_1)
RadioGroup.addButton(rbtn_2)
RadioGroup.addButton(rbtn_3)
RadioGroup.addButton(rbtn_4)
RadioGroup.addButton(rbtn_5)
RadioGroup.addButton(rbtn_6)
layout_ans1 = QHBoxLayout()
layout_ans2 = QVBoxLayout() # вертикальные будут внутри горизонтального
layout_ans3 = QVBoxLayout()
layout_ans4 = QVBoxLayout()
layout_ans2.addWidget(rbtn_1)
layout_ans2.addWidget(rbtn_2)
layout_ans2.addWidget(rbtn_3)
layout_ans4.addWidget(rbtn_6)
layout_ans3.addWidget(rbtn_4)
layout_ans3.addWidget(rbtn_5)
layout_ans1.addLayout(layout_ans2)
layout_ans1.addLayout(layout_ans3)
layout_ans1.addLayout(layout_ans4) # разместили столбцы в одной строке
RadioGroupBox.setLayout(layout_ans1) # готова "панель" с вариантами ответов
AnsGroupBox1 = QGroupBox("Результат теста")
lb_Result = QLabel('ghgh') # здесь размещается надпись "правильно" или "неправильно"
lb_Correct = QLabel('ss') # здесь будет написан текст правильного ответа
layout_res = QVBoxLayout()
layout_res.addWidget(lb_Result, alignment=(Qt.AlignLeft | Qt.AlignTop))
layout_res.addWidget(lb_Correct, 95)
AnsGroupBox1.setLayout(layout_res)
layout_line1 = QHBoxLayout() # вопрос
layout_line2 = QHBoxLayout() # варианты ответов или результат теста
layout_line3 = QHBoxLayout() # кнопка "Ответить"
layout_line1.addWidget(lb_Question, alignment=(Qt.AlignHCenter | Qt.AlignVCenter))
layout_line2.addWidget(RadioGroupBox)
layout_line2.addWidget(AnsGroupBox1)
AnsGroupBox1.hide() # скроем панель с ответом, сначала должна быть видна панель вопросов
layout_line3.addStretch(1)
layout_line3.addWidget(btn_OK, stretch=2) # кнопка должна быть большой
layout_line3.addStretch(1)
layout_card = QVBoxLayout()
layout_card.addLayout(layout_line1, stretch=2)
layout_card.addLayout(layout_line2, stretch=8)
layout_card.addStretch(1)
layout_card.addLayout(layout_line3, stretch=1)
layout_card.addStretch(1)
layout_card.setSpacing(5) # пробелы между содержимым
window3 = QWidget()
window3.setLayout(layout_card)
window3.setWindowTitle('')
window3.score = 0
window3.total = 0
btn_OK.clicked.connect(check_answer)
window3.resize(450, 350)
if __name__ == '__main__':
window3.show()
def show_result():
btn_OK.setText('Надеюсь мы помогли вам')
if __name__ == '__main__':
RadioGroupBox.hide()
AnsGroupBox1.show()
def show_correct(ver):
''' показать результат - установим переданный текст в надпись "результат" и покажем нужную панель '''
lb_Correct.hide()
if ver == 0:
pixmap = QPixmap('img.png')
if ver == 1:
pixmap = QPixmap('img1.png')
if ver == 2:
pixmap = QPixmap('img2.png')
if ver == 3:
pixmap = QPixmap('img3.png')
if ver == 4:
pixmap = QPixmap('2.1.5.png')
if ver == 5:
pixmap = QPixmap('2.1.6.png')
if ver == 6:
pixmap = QPixmap('2.1.7.png')
lb_Correct.setPixmap(pixmap)
if __name__ == '__main__':
lb_Correct.show()
show_result()
def check_answer():
if answers3[0].isChecked():
show_correct(0)
if answers3[1].isChecked():
show_correct(1)
if answers3[2].isChecked():
show_correct(2)
if answers3[3].isChecked():
show_correct(3)
if answers3[4].isChecked():
show_correct(4)
if answers3[5].isChecked():
show_correct(5)
if __name__ == '__main__':
app = QApplication([])
wind1()
window.show()
app.exec()