если использовать QThred, то зависать не будет? или проблема не в этом?
но если из потока threading.Thread - то всё зависает
import time
time.time()
from time import time
time()
from time import *
time()
if __name__ == '__main__':
pass
print('модули выполняются при импорте')
if __name__ == '__main__':
print('а это выполнено не будет')
class Task:
def __init__(self, параметры):
super().__init__()
import sys
# import requests
from PyQt5 import QtCore, QtWidgets, QtGui
from PyQt5.Qt import *
# Картинка для заполнения
IMAGE = b'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x10\x00\x00\x00\x10\x08\x04\x00\x00\x00\xb5\xfa7\xea\x00\x00\x00\x02sBIT\x08\x08U\xecF\x04\x00\x00\x00\tpHYs\x00\x00\x00v\x00\x00\x00v\x01N{&\x08\x00\x00\x00\x19tEXtSoftware\x00www.inkscape.org\x9b\xee<\x1a\x00\x00\x01\x03IDAT(S}\xd1\xb1jS\x01\x14\xc6\xf1\x1fvi\xda\xc5*\x18\x93!\t\x82\x98-\x84\xd6\xe2\xe0+\xd8\xa1\x04\xbd\x08\xc1\'s0f\x11|\x02!q\xb8\xd0\xa1\xc1L\x9dj\xbaT\xe2\x94w\xf8:\xdc\xf4\xb6\x0e\x96\xb3}\xfc\xf9\xce\x9fs\xc4\xdd(\xac\xfdq\xf2O\x16\xa1\xe1\xbd\x83p\xa1\xe9\x85\xb3p\xe0\x83\xbd-`O\xe9\xbb\x95\x85Yx\xe4\xa7s\xbf}UjT\xc0[_B\xdfq];\xf02L\xbc\xa9\x80\xa6+\x9d\x08mcc\xed\x08=+\xcfn\x1d~9\x0c\xa76\xa6\xa66N\xc3\xd0"\x82w\xce\x94\xa1e\xb3\xed\xe9\xd8h\x87\xb9\xa5\x11\xd7^\xd9\t\x85i\xed05\x8e\xd0\xb5\xe6\xaff<\x04|t\xe1\xc7\x03+",\xbc\xfe\xafdxl\xa5\x1f\xa1\xa5PhE\xe8\xb9\xf4\xa4\x02\x86\xbe\x85\x8eA\xed0\xd4\x0b\x13G\x15\xb0\xab\xf4\xd9\x95\xa5Y\x84\xb9\x85K\x93\xfa\xd4a\xdf\'\xcf\xc3RW\xd72<U\xd4\xcf\xba\x1b#kk\xa3\xfb\xd9\ru"\xad\xb2\x11\xa2\xcfy\x00\x00\x00\x00IEND\xaeB`\x82'
class Widget(QWidget):
def __init__(self, urls):
super().__init__()
self.grid = QGridLayout(self)
for i, url in enumerate(urls):
lbl = QLabel()
image = QImage()
image.loadFromData(IMAGE)
if i == 0:
lbl.setPixmap(QPixmap(image).scaled(210, 210))
self.grid.addWidget(lbl, i + 1, 0, 4, 1)
else:
lbl.setPixmap(QPixmap(image).scaled(70, 70))
self.grid.addWidget(lbl, i, 1, 1, 1)
class ListWidget(QListWidget):
def __init__(self, *args, **kwargs):
super(ListWidget, self).__init__(*args, **kwargs)
self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
self.setEditTriggers(self.NoEditTriggers)
self.setFlow(self.LeftToRight)
self.setWrapping(True)
self.setResizeMode(self.Adjust)
self.setSpacing(10)
# Резиновая лента (для эффекта выбора рамки)
self._rubberPos = None
self._rubberBand = QRubberBand(QRubberBand.Rectangle, self)
def makeItem(self, lb):
item = QtWidgets.QListWidgetItem(self)
item.setSizeHint(QtCore.QSize(300, 300))
self.setItemWidget(item, lb)
class MyWindow(QtWidgets.QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle('ListWidget')
self.resize(1100, 670)
self.show()
self.listWidget = ListWidget()
# кнопка
self.push_button = QPushButton('del 0 item')
box = QtWidgets.QVBoxLayout(self)
# добавляем кнопку
box.addWidget(self.push_button)
box.addWidget(self.listWidget)
self.urls = [
"https://img.icons8.com/ios/452/phone.png",
"https://img.icons8.com/ios/452/phone.png",
"http://www.google.com/favicon.ico",
"https://www.imgonline.com.ua/examples/random-pixels-wallpaper-big.jpg",
"https://laguna-akul.ru/upload/003/u379/f4/61/8f68d93a.jpg",
]
num = 5
for i in range(num):
art = Widget(self.urls)
self.listWidget.makeItem(art)
# связываем сигнал нажатия на кнопку с методом
self.push_button.clicked.connect(self._on_push_button_clicked)
# метод-обработчик кнопки
def _on_push_button_clicked(self):
# takeItem удаляет итем с виджетом из списка и возвращает его
removed = self.listWidget.takeItem(0)
print(removed)
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
w = MyWindow()
sys.exit(app.exec_())
Но у нас такая компоновка виджетов, которую, я полагаю, очень проблематично можно будет перенести в грид. Что-то ещё видел про св-во sizePolicy, но что-то так и не разобрался.- элементом компоновщика может быть другой компоновщик
class Laba2(QMainWindow, laba2.Ui_Laba2):
class Laba2(QMainWindow):
"""Класс лабы 2, инициализирует форму и
заполняет её элементами
"""
def __init__(self):
super().__init__()
self.ui = laba2.Ui_Laba2()
self.ui.setupUi(self)
self.map_left_pos_key = QPixmap("..\\images\\laba_2\\key_left.png") -> self.ui.map_left_pos_key = QPixmap("..\\images\\laba_2\\key_left.png")
import time,threading
class Foo:
a = "a"
def thread_func():
w = 0
while w < 5:
time.sleep(2)
print("func:" + Foo.a)
w += 1
if __name__ == "__main__":
x = threading.Thread(target=thread_func)
x.start()
Foo.a = input('new: ')
1. После числительного один и составных числительных, оканчивающихся на один, ставится существительное в именительном падеже.
2. После числительных два, три, четыре и составных числительных, оканчивающихся на два, три, четыре, ставится существительное в родительном падеже единственного числа.
3. После числительного пять, шесть и т.д. и после слов много, мало, несколько, сколько и т.д. ставится существительное в родительном падеже множественного числа.
data = [
{
"LocationId": 1, "BlastHole":
[
{
"Coords":
{
"X": 15599.1298828125, "Y": 35847.578125, "Z": 180.10580444335938
},
"DesignMass": 835.0,
"AdditionalCharge": 0.0,
"RealAdditionalMass": 0.0,
"DesignHeight": 9.992707,
"RealMass": 1301.0,
"DesignExplosiveId": 8,
"RealHeight": 15.56948,
"RealExplosiveId": 8,
"Depth": 10.0,
"SourceHoleDepth": 17.10579,
"Tamping": 0.0,
"StatusId": 4,
"UnitId": 4062,
"StaffId": 1019,
"SecondStaffId": -1,
"ShiftId": 1,
"Diameter": 0.311,
"StartTimestamp": "2020-08-18T08:46:39",
"EndTimeStamp": "2020-08-18T08:47:16",
"HoleNotes": "null",
"HoseLength": 0.0,
"BlockID": 14999,
"ID": 717689,
"Name": "100",
"OldName": "null"
}
]
}
]
for i in data:
print('BlastHole', i['BlastHole'])
if i['BlastHole']['Name'] == '100':
print(['BlastHole']['SecondStaffId'])
i['BlastHole'][0]['Name']
единственный. Каких строк может быть много? Пройтись еще одним циклом по списку? import sys
from PySide2.QtWidgets import QApplication, QMainWindow, QWidget, QHBoxLayout, QTextEdit, QScrollBar
class Main(QMainWindow):
def __init__(self):
super(Main, self).__init__()
centralWidget = QWidget(self)
self.setCentralWidget(centralWidget)
# добавляем компонощик
self.h_grid = QHBoxLayout(centralWidget)
self.customScroll = QScrollBar()
# добаляем QtextEdit
self.textEdit = QTextEdit()
# задаем для него скролл
self.textEdit.setHorizontalScrollBar(self.customScroll)
# убираем полосу, отведенную под скролл
self.textEdit.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
self.h_grid.addWidget(self.textEdit)
self.h_grid.addWidget(self.customScroll)
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Main()
ex.show()
sys.exit(app.exec_())
import sys
import time
from PySide2.QtCore import QThreadPool, QRunnable, Signal, QObject
from PySide2.QtWidgets import QApplication, QMainWindow, QPushButton, QWidget, QHBoxLayout
class Main(QMainWindow):
def __init__(self):
super(Main, self).__init__()
centralWidget = QWidget(self)
self.setCentralWidget(centralWidget)
# добавляем компонощик
self.h_grid = QHBoxLayout(centralWidget)
self.thread = QThreadPool().globalInstance()
# добаляем кнопки
self.button = QPushButton('Start thread')
self.h_grid.addWidget(self.button)
self.worker = Worker()
self.worker.finished.connect(self.__on_finish)
self.button.clicked.connect(self.start_worker)
def start_worker(self):
self.thread.start(self.worker)
def __on_finish(self):
print('Воркер закончил работу')
class WorkerSignaller(QObject):
finished = Signal()
class Worker(QRunnable):
def __init__(self):
super(Worker, self).__init__()
self.signaller = WorkerSignaller()
self.finished = self.signaller.finished
def run(self):
print(f'Я воркер, и я запускаюсь')
time_to_sleep = 10
print(f'Я воркер, и я сплю {time_to_sleep} секунд')
time.sleep(time_to_sleep)
print(f'Я воркер, и я поспал')
self.finished.emit()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Main()
ex.show()
sys.exit(app.exec_())
#########
elif dice == 4:
raise CarCrashError('бип бип')
#########
try:
one_day()
except SuicideError:
do_something()
except CarCrashError:
do_something()
# и т.д.
#########
elif dice == 4:
return some_id_data
#########
reactions = {
some_id_data: do_something # <- объект функции
}
result = one_day()
if result == some_id_data:
do_something()
result = one_day()
reactions[some_id_data]()