Ответы пользователя по тегу Python
  • Как в QTableWidget подгрузить картинки из интернета, а не из папки?

    sanya84
    @sanya84
    Фанатик Python 3
    Только я не нашёл как установить размер ячейки под изображение
    from io import BytesIO
    import requests 
    from PyQt5.QtWidgets import (QApplication, QMainWindow, QGridLayout,
                                 QWidget, QTableWidget, QTableWidgetItem)
    from PyQt5.QtGui import QPixmap, QIcon
    from PyQt5.QtCore import QSize, Qt, QThread, pyqtSignal, pyqtSlot
    
    
    class UploadImage(QThread):
        data = pyqtSignal(bytes)
        def __init__(self):
            super().__init__()
        @pyqtSlot()
        def run(self):
    
            headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.2)\
            AppleWebKit/537.36 (KHTML, like Gecko)\
            Chrome/63.0.3239.84 Safari/537.36',
            'Accept-Language': 'ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7'}
    
            url = "https://cdn.programiz.com/sites/tutorial2program/files/hello-world.jpg"
    
            try:
                content = requests.get(url, headers=headers).content
                self.data.emit(content)
            except requests.exceptions.ConnectionError as error:
                print(error)
    
    
    class MainWindow(QMainWindow):
        # Переопределяем конструктор класса
        def __init__(self):
            # Обязательно нужно вызвать метод супер класса
            super().__init__()
    
            self.pixmap = QPixmap()
    
            self.setMinimumSize(QSize(800, 300))             # Устанавливаем размеры
            self.setWindowTitle("Загрузка изображения из интернета")# Устанавливаем заголовок окна
    
            central_widget = QWidget(self)                  # Создаём центральный виджет
            self.setCentralWidget(central_widget)           # Устанавливаем центральный виджет
     
            grid_layout = QGridLayout()             # Создаём QGridLayout
            central_widget.setLayout(grid_layout)   # Устанавливаем данное размещение в центральный виджет
     
            self.table = QTableWidget(self)  # Создаём таблицу
    
            self.table.setColumnCount(1)     
            self.table.setRowCount(1)        # и одну строку в таблице
     
            # Устанавливаем заголовки таблицы
            self.table.setHorizontalHeaderLabels(["Изображение"])
     
            # Устанавливаем всплывающие подсказки на заголовки
            self.table.horizontalHeaderItem(0)
            self.table.horizontalHeaderItem(0).setToolTip("Шутка")
    
            # Устанавливаем выравнивание на заголовки
            self.table.horizontalHeaderItem(0).setTextAlignment(Qt.AlignLeft)
    
            # делаем ресайз колонок по содержимому
            self.table.resizeColumnsToContents()
            grid_layout.addWidget(self.table, 0, 0)   # Добавляем таблицу в сетку
    
            self.upload_image = UploadImage()
            self.upload_image.start()
            self.upload_image.data.connect(self.show_image)
    
        def show_image(self, image_bytes):
            self.bytes_io = BytesIO(image_bytes)
            self.pixmap.loadFromData(self.bytes_io.getvalue())
            
            image = QTableWidgetItem()
            image.setData(Qt.DecorationRole, self.pixmap)
            image.setFlags(image.flags() ^ Qt.ItemIsEditable)
            
            self.table.setItem(0, 0, image)
            self.table.resizeColumnsToContents()
            
    if __name__ == "__main__":
        import sys
     
        app = QApplication(sys.argv)
        mw = MainWindow()
        mw.show()
        sys.exit(app.exec())
    Ответ написан
    Комментировать
  • Какая есть простая библиотека под gui для python, линукс?

    sanya84
    @sanya84
    Фанатик Python 3
    Попробуйте tkinter
    Ответ написан
    Комментировать
  • Как запретить сворачивать программу, делать меньше окно?

    sanya84
    @sanya84
    Фанатик Python 3
    Вот так решено)
    import sys
    from PyQt5.QtWidgets import *
    from PyQt5.QtCore import Qt
    
    
    class Example(QWidget):
        def __init__(self):
            super().__init__()
            self.initUI()
    
        def initUI(self):
            self.setGeometry(300, 300, 300, 200)
            self.setWindowTitle('Example')
            self.setWindowFlags(Qt.WindowMaximizeButtonHint)
    
    if __name__ == '__main__':
    
        app = QApplication(sys.argv)
        example = Example()
        example.show()
        sys.exit(app.exec_())
    Ответ написан
  • Как исправить ошибку при изменении расширения файла .ui на .py?

    sanya84
    @sanya84
    Фанатик Python 3
    Откройте папку где лежит UI файл и в строке где показывается путь к файлу нажмите скопировать путь потом откройте командную строку и наберите (cd d\ и то что скопировали нажмите вставить нажмите Enter далее вводите pyuic5 Urawnenie.ui -o Urawnenie.py жмёте Enter и радуетесь
    Ответ написан
  • Можно ли задать функцию для кнопки, не нажимая ее?

    sanya84
    @sanya84
    Фанатик Python 3
    import sys
    from PyQt5.QtWidgets import *
    
    
    class Example(QWidget):
        def __init__(self):
            super().__init__()
            self.resize(180, 40)
            self.setWindowTitle("Пример")
    
            self.button = QPushButton('изменить надпись нижней кнопки', self)
            self.button.clicked.connect(self.function)
            self.button_2 = QPushButton('Hello user!', self)
            self.button_2.setGeometry(0, 20, 180, 25)
    
        def function(self):
            self.button_2.setText("Привет пользователь!")
    
    def main():
        app = QApplication(sys.argv)
        window = Example()
        window.show()
        sys.exit(app.exec_())
    
    if __name__ == '__main__':
        main()
    Ответ написан
  • Как реализовать выдвигающееся меню?

    sanya84
    @sanya84
    Фанатик Python 3
    Вот так можно начать, дальше сами развивайте
    import sys
    from PyQt5.QtWidgets import *
    from PyQt5.QtCore import Qt
    
    
    class PopupMenu(QWidget):
        
        def __init__(self):
            super().__init__()
            self.setWindowTitle('Пример всплывающего меню')
            self.resize(300, 300)
            
            self.label = QLabel(self)
            self.label.setText("МЕНЮ")
    
            self.popup_menu = QLabel(self)
            self.popup_menu.resize(180, 100)
            self.popup_menu.setText("Hello PyQt5!")
            self.popup_menu.setStyleSheet("border: 2px solid grey; font: 75 italic 16pt Verdana;\
                    text-align: center; border-radius: 10px;\
                    background-color: lightblue; width: 10px;")
    
            self.popup_menu.hide()
    
            hbox = QHBoxLayout()
            hbox.setAlignment(Qt.AlignCenter)
            hbox.addStretch(2)
            hbox.addWidget(self.label)
            hbox.addWidget(self.popup_menu)
    
            self.label.installEventFilter(self)
    
        def eventFilter(self, obj, event):
            # Если мышь над виджетом
            if event.type() == 10:
                self.popup_menu.show()
                
            # Если мышь покинула область виджета
            elif event.type() == 11:
                pass
            return False
    
    
    if __name__ == '__main__':
        app = QApplication(sys.argv)
        window = PopupMenu()
        window.show()
        sys.exit(app.exec_())
    Ответ написан
    Комментировать
  • Функция возвращает NONE?

    sanya84
    @sanya84
    Фанатик Python 3
    def counter():
        list_integer = []
        while 1:
            number = input()
            stop = str(number)
            if stop == "stop":
                break
            number = int(number)
            list_integer.append(number)
        return list_integer
        
    print(counter())
    Ответ написан
    Комментировать
  • Как передать именные аргументы в Python?

    sanya84
    @sanya84
    Фанатик Python 3
    Можно так.
    from threading import Thread
    def a(b=None,c=None):
      if c==True and b==None:
        print('True')
    Thread(target=a, args=(None, True)).start()
    Ответ написан
    Комментировать
  • Как правильно скомпилировать программу на python, использующую PyQt5, при помощи pyinstaller?

    sanya84
    @sanya84
    Фанатик Python 3
    Вот ссылка как правильно собрать приложение работает без проблем один EXE файл.
    Проблема pyinstaller Pyqt5 добавить фон.
    вот это означает несовместимость PyQt5 и Python. или другое, не важно.
    5b0aae09eb185417052827.png

    Решение снести PyQt5 и установить так:
    spoiler
    pip install pyqt5
    spoiler
    pip install pyqt5-tools
    Скоро кстати выйдет PySide2)
    Ответ написан
    7 комментариев
  • Как вывести пользователю, что он ввел неправильное имя файла в python?

    sanya84
    @sanya84
    Фанатик Python 3
    Продолжение
    try:
        filename = input("Введите имя файла: ")
        file_object = open(filename + ".txt", 'r')
        all_the_text = file_object.read( ).split('\n')
        print (all_the_text)
    
        num_words = 0
        with open(filename + ".txt",'r') as f:
            for line in f:
                words = line.split()
                num_words += len(words)
        print("Число слов:")
        print(num_words)
    except IOError as error:
        print(error)
        print("Файл не найден.")
    Ответ написан
  • Как на python сделать таймер?

    sanya84
    @sanya84
    Фанатик Python 3
    from threading import Timer
    from time import sleep
    
    def hello():
        print("Hello user!")
    
    def bye():
        sleep(5)
        print("Bye...bye...")
    
    while 1:
        timer = Timer(3, hello)
        timer.start()
        bye()
    Ответ написан
    Комментировать
  • Как получить содержимое html страницы с русским текстом?

    sanya84
    @sanya84
    Фанатик Python 3
    <li><a href="/info/partners">\xd0\x9f\xd0\xb0\xd1\x80\xd1\x82\xd0\xbd\xd0\xb5\xd1\x80\xd0\xb0\xd0\xbc</a></li>\n                    <li><a href="/info/agreement">\xd0\x9f\xd0\xbe\xd0\xbb\xd1\x8c\xd0\xb7\xd0\xbe\xd0\xb2\xd0\xb0\xd1\x82\xd0\xb5\xd0\xbb\xd1\x8c\xd1\x81\xd0\xba\xd0\xbe\xd0\xb5 \xd1\x81\xd0\xbe\xd0\xb3\xd0\xbb\xd0\xb0\xd1\x88\xd0\xb5\xd0\xbd\xd0\xb8\xd0\xb5</a></li>


    b = b"\xd0\x9f\xd0\xb0\xd1\x80\xd1\x82\xd0\xbd\xd0\xb5\xd1\x80\xd0\xb0\xd0\xbc \xd0\x9f\xd0\xbe\xd0\xbb\xd1\x8c\xd0\xb7\xd0\xbe\xd0\xb2\xd0\xb0\xd1\x82\xd0\xb5\xd0\xbb\xd1\x8c\xd1\x81\xd0\xba\xd0\xbe\xd0\xb5 \xd1\x81\xd0\xbe\xd0\xb3\xd0\xbb\xd0\xb0\xd1\x88\xd0\xb5\xd0\xbd\xd0\xb8\xd0\xb5"
    
    b.decode("utf-8") # -> 'Партнерам Пользовательское соглашение'
    Ответ написан
  • Как конвертировать .ui в .py при помощи pyuic (PyQt5)?

    sanya84
    @sanya84
    Фанатик Python 3
    python не является внутренней или внешней
    командой, исполняемой программой или пакетным файлом.

    В переменную PATH нужно прописать python
    C:\Python36;C:\Python36\Scripts;
    Пути свои, и версию интерпретатора.
    Ответ написан
    Комментировать
  • Как соединить два поля и кнопку pyqt5?

    sanya84
    @sanya84
    Фанатик Python 3
    import sys
    from PyQt5.QtWidgets import *
    from PyQt5.QtCore import *
    
    
    class Example(QMainWindow):
        send = pyqtSignal(tuple)
        def __init__(self):
            super().__init__()
            self.initUI()
            
        @pyqtSlot()
        def initUI(self):
            self.setWindowTitle("Пример")
            self.setGeometry(300, 300, 250, 100)
    
            self.line_edit = QLineEdit(self)
            self.line_edit.setGeometry(0, 0, 250, 33)
            
            self.line_edit_2 = QLineEdit(self)
            self.line_edit_2.setGeometry(0, 33, 250, 33)
    
            self.button = QPushButton('Запуск', self)
            self.button.clicked.connect(self.start)
            self.button.setGeometry(0, 66, 250, 34)
            
            self.send.connect(self.print)
    
        def start(self):
            # print("LineEdit get text:", self.line_edit.text())
            # print("LineEdit2 get text:", self.line_edit_2.text())
    
            str_tuple = (self.line_edit.text(), self.line_edit_2.text())
            self.send.emit(str_tuple)
            
        def print(self, data):
            print(data)
            
    if __name__ == '__main__':
        application = QApplication(sys.argv)
        window = Example()
        window.show()
        sys.exit(application.exec_())
    Ответ написан
    2 комментария
  • Python фильтрация данных?

    sanya84
    @sanya84
    Фанатик Python 3
    Если я правильно понял вопрос
    text = "Жизнь", "в Америке"
    
    def search(data):
        print(" ".join(text))
        data = " ".join(text)
        if data == "Жизнь в Америке":
            return True
        else:
            return False
    
    print(search(text))
    Ответ написан
    Комментировать
  • Что не так с моим кодом python?

    sanya84
    @sanya84
    Фанатик Python 3
    Функцияzip()
    Принимает аргументы в виде списка
    v = [1, 2]
    w = [6, 7]
    def dot(v, w):
        return sum(v_i*w_i for v_i, w_i in zip(v, w))
    
    print(dot(v, w)) # 20
    Ответ написан
    Комментировать
  • Агрегация в python?

    sanya84
    @sanya84
    Фанатик Python 3
    Вот пример агрегации в питон в данном случае я не могу использовать наследование

    import os
    import sys
    from PyQt5.QtWidgets import *
    from PyQt5.QtCore import *
    from PyQt5.QtCore import Qt
    
    
    class EnterName(QWidget):
        text_value = pyqtSignal(str)
        def __init__(self):
            super().__init__()
            self.initUI()
    
        def initUI(self):
            self.setGeometry(300, 300, 300, 50)
            self.setWindowTitle('Введите имя')
            
    
            self.button = QPushButton('Сохранить', self)
            self.button.clicked.connect(self.bEvent)
            self.button.move(120, 30)
    
            self.lEdid = QLineEdit(self)
            self.lEdid.setGeometry(0, 0, 300, 30)
            
    
        @pyqtSlot()
        def bEvent(self):
            self.text_value.emit(self.lEdid.text())
            self.hide()
    
    
    class Example(QWidget):
        def __init__(self):
            super().__init__()
            self.initUI()
    
        def initUI(self):
            self.setGeometry(300, 300, 420, 280)
            self.setWindowTitle('Exsample')
            self.setWindowModality(Qt.WindowModal)
    
            self.button = QPushButton('Имя', self)
            self.button.move(180, 260)
            self.button.clicked.connect(self.bEvent)
    
            self.tb = QTextBrowser(self)
            self.tb.setGeometry(0, 0, 420, 260)
    
            self.eName = EnterName()
            self.eName.text_value.connect(self.signalHandler)
    
        def bEvent(self):
            self.eName.show()
    
        def signalHandler(self, text):
            self.tb.append(text)
    
    if __name__ == '__main__':
    
        app = QApplication(sys.argv)
        example = Example()
        example.show()
        sys.exit(app.exec_())
    Ответ написан
    Комментировать
  • Как с помощю Pyinstaller собрать рабочий exe файл, если я использую сторонние библиотеки?

    sanya84
    @sanya84
    Фанатик Python 3
    Вы не добавили в исполняемый файл api.py
    вот ссылка
    PyInstaller PyQt5 как добавить ui файл?
    там всё поймёте )
    если конечно-же вопрос актуален
    Ответ написан
    Комментировать
  • Как сделать дочернее окно?

    sanya84
    @sanya84
    Фанатик Python 3
    import os
    import sys
    from PyQt5.QtWidgets import *
    from PyQt5.QtCore import *
    
    def log_uncaught_exceptions(ex_cls, ex, tb):
        import traceback
        text = '{}: {}:\n\n'.format(ex_cls.__name__, ex)
        text += ''.join(traceback.format_tb(tb))
        QMessageBox.critical(None, 'Ошибка!', text)
        
    sys.excepthook = log_uncaught_exceptions
    
    
    class EnterName(QWidget):
        text_value = pyqtSignal(str)
        def __init__(self):
            super().__init__()
            self.initUI()
    
        def initUI(self):
            self.setGeometry(300, 300, 300, 50)
            self.setWindowTitle('Введите имя')
    
            self.button = QPushButton('Сохранить', self)
            self.button.clicked.connect(self.bEvent)
            self.button.move(120, 30)
    
            self.lEdid = QLineEdit(self)
            self.lEdid.setGeometry(0, 0, 300, 30)
    
        @pyqtSlot()
        def bEvent(self):
            self.text_value.emit(self.lEdid.text())
            self.hide()
    
    
    class Example(QWidget):
        def __init__(self):
            super().__init__()
            self.initUI()
    
        def initUI(self):
            self.setGeometry(300, 300, 420, 280)
            self.setWindowTitle('Exsample')
    
            self.button = QPushButton('Имя', self)
            self.button.move(180, 260)
            self.button.clicked.connect(self.bEvent)
    
            self.tb = QTextBrowser(self)
            self.tb.setGeometry(0, 0, 420, 260)
    
            self.eName = EnterName()
            self.eName.text_value.connect(self.signalHandler)
    
        def bEvent(self):
            self.eName.show()
    
        def signalHandler(self, text):
            self.tb.append(text)
    
    if __name__ == '__main__':
    
        app = QApplication(sys.argv)
        example = Example()
        example.show()
        sys.exit(app.exec_())
    Ответ написан
    Комментировать
  • Как из QTextEdit вывести текст в переменную text?

    sanya84
    @sanya84
    Фанатик Python 3
    Так попробуйте
    import sys
    
    from PyQt5.QtWidgets import *
    import rsa
    
    class Example(QMainWindow):
        def __init__(self):
            super().__init__()
            
            self.setWindowTitle("Пример")
    
            self.textBrowser = QTextBrowser(self)
            self.textBrowser.move(0, 50)
            
            self.textEdit = QTextEdit(self)
            self.textEdit.append("Hello world!")
    
            text = self.textEdit.toPlainText()
    
            
    
            (pubkey, privkey) = rsa.newkeys(700)
    
            # шифруем
            crypto = rsa.encrypt(text.encode(), pubkey)
            print(crypto)
    
            # записываем в файл
            file = open("my_file.bin", "wb").write(crypto)
    
            # открываем файл в режиме чтения байтов
            file = open("my_file.bin", "rb").read()
            
            #расшифровываем
            self.text = rsa.decrypt(file, privkey)
            self.textBrowser.append(self.text.decode())
            print(text)
    
    if __name__ == '__main__':
        app = QApplication(sys.argv)
        form = Example()
        form.show()
        app.exec()
    Ответ написан
    6 комментариев